İçeriğe geç
Educora
Başlangıç14 dk1 / 8

Neden TypeScript?

TypeScript'in JavaScript'e ne kattığını, derleyicinin hataları kod çalışmadan önce nasıl yakaladığını ve `tsc`, `tsconfig.json` ve Node.js ile bir projenin nasıl kurulduğunu öğren.

Kendini test et
Bu derste öğreneceklerin
  • Statik tiplerin ne olduğunu ve hangi hataları önceden yakaladığını açıklamak
  • TypeScript kodunun JavaScript'e nasıl dönüştüğünü anlatmak
  • tsc ve basit bir tsconfig.json ile proje kurmak
  • .ts dosyalarını Node.js ya da tsx ile doğrudan çalıştırmak, tipleri ise tsc --noEmit ile denetlemek

Bir çevrim içi mağaza düşün: fiyatı biçimlendiren formatPrice(price) fonksiyonu aylardır sorunsuz çalışıyor. Bir gün fiyat formdan sayı olarak değil '4.5' string'i olarak geliyor ve sayfa TypeError: price.toFixed is not a function hatasıyla çöküyor. Hatayı geliştiriciden önce müşteri gördü. TypeScript tam da bunun için var: bu tür hataları kullanıcıların değil senin, daha kodu yazarken editörde görmen için.

TypeScript nedir?

Tanım
TypeScript

Microsoft'un geliştirdiği ve JavaScript'e statik tipler ekleyen bir programlama dili. Geçerli her JavaScript programı aynı zamanda bir TypeScript programıdır; TypeScript yalnızca değişkenlerin, parametrelerin ve fonksiyonların ne tür değerler tuttuğunu tarif etmeni sağlar.

JavaScript'te tipler dinamik olarak denetlenir; yani ancak satır gerçekten çalıştığında. TypeScript'te ise tipler statik olarak, kod çalıştırılmadan, yalnızca okunarak denetlenir. Tip iki noktadan sonra yazılır ve buna tip belirtimi (type annotation) denir: price: number, “price her zaman bir sayıdır” demektir. Bir yerde string gönderirsen derleyici bunu hemen söyler:

TypeScript
function formatPrice(price: number): string {
  return price.toFixed(2) + ' AZN';
}

console.log(formatPrice(4.5));
console.log(formatPrice('4.5'));
: string, fonksiyonun bir string döndürdüğünü belirtir. İkinci çağrı hatalıdır.
Text
shop.ts:6:25 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.

6 console.log(formatPrice('4.5'));
                          ~~~~~
Derleyicinin mesajı: dosya, satır ve sütun (shop.ts:6:25), hata kodu TS2345 ve nedeni. Dalgalı çizgi hatanın tam yerini gösterir.

TypeScript'ten JavaScript'e

Tarayıcılar ve Node.js aslında yalnızca JavaScript anlar. Bu yüzden TypeScript derleyicisi tsc iki iş yapar: tipleri denetler ve tiplerin basitçe silindiği sıradan bir JavaScript kodu üretir. Aşağıda küçük bir dosya ve tsc'nin ondan ürettiği JavaScript var:

TypeScript
type User = { name: string; age: number };

export function greet(user: User): string {
  return `Hello, ${user.name}! You are ${user.age}.`;
}

const aysel: User = { name: 'Aysel', age: 14 };
console.log(greet(aysel));
Beklenen çıktı
Hello, Aysel! You are 14.
greet.ts: type User, nesnenin yapısını tarif eder.
JavaScript
export function greet(user) {
    return `Hello, ${user.name}! You are ${user.age}.`;
}
const aysel = { name: 'Aysel', age: 14 };
console.log(greet(aysel));
tsc'nin sonucu olan greet.js: type User satırı ve tüm tip belirtimleri kayboldu, mantık ise tamamen aynı.

Tipler ne kazandırır?

  • Hatalar erkenden yakalanır: özellik adındaki bir yazım hatası, yanlış bir argüman ya da unutulmuş bir null kontrolü program çalışmadan bulunur.
  • Akıllı editör: editör her değerin ne olduğunu bildiği için otomatik tamamlama, tanıma gitme ve tüm projede güvenli yeniden adlandırma sorunsuz çalışır.
  • Tipler belge görevi görür: formatPrice(price: number): string başlığı, fonksiyonun gövdesini okumadan nasıl kullanılacağını anlatır.
  • Büyük projelerde güvenli değişiklik: bir fonksiyonun parametrelerini değiştirdiğinde derleyici güncellenmesi gereken her yeri listeler.

Projeyi kurmak

  1. 1
    TypeScript'i kur

    Proje klasöründe npm install --save-dev typescript komutunu çalıştır. Derleyici node_modules içine kurulur ve npx tsc ile çağrılır.

  2. 2
    Ayar dosyasını oluştur

    npx tsc --init, önerilen ayarlarla bir tsconfig.json dosyası oluşturur.

  3. 3
    Kodu yaz

    Kodunu src/index.ts dosyasına yaz.

  4. 4
    Derle ve çalıştır

    npx tsc tüm projeyi denetler ve JavaScript'i dist/ klasörüne yazar; ardından node dist/index.js ile çalıştır.

JSON
{
  "compilerOptions": {
    "target": "es2022",
    "module": "nodenext",
    "strict": true,
    "rootDir": "src",
    "outDir": "dist"
  }
}
En sade tsconfig.json. tsc --init daha fazla seçenek üretir ama temel olanlar bunlardır.
SeçenekNe yapar
targethangi JavaScript sürümünün üretileceğini seçer, örneğin es2022
modulemodül sistemini seçer; nodenext modern Node.js'in kurallarını izler
stricttüm katı denetimleri açar; her zaman true bırak
rootDir / outDir.ts kaynaklarının nerede olduğunu ve .js çıktısının nereye yazılacağını belirtir

.ts dosyalarını doğrudan çalıştırmak

Modern Node.js (22.18 ve daha yeni sürümler, Node.js 24 dâhil) bir .ts dosyasını doğrudan çalıştırabilir: node index.ts. Bunun için tip silme (type stripping) yöntemi kullanılır: Node.js tipleri kesip atar ve geriye kalan JavaScript'i çalıştırır. tsx aracı aynı işi Node.js'in eski sürümlerinde de yapar.

Terminal
node src/index.ts      # Node.js 22.18+: strip the types and run
npx tsx src/index.ts   # tsx: run TypeScript on older Node.js too
npx tsc --noEmit       # only check the types, write no files
Kodu çalıştırmanın iki yolu ve tipleri denetlemek için bir komut.

Önemli noktalar

  • TypeScript, JavaScript'e statik tipler ekler; hatalar kod çalışmadan önce bulunur.
  • Tip belirtimi iki noktadan sonra yazılır: price: number.
  • tsc tipleri denetler ve tipleri silinmiş sıradan JavaScript üretir; çalışma anında tip yoktur.
  • Proje ayarları tsconfig.json içinde tutulur; strict: true her zaman açık olmalıdır.
  • node file.ts ve tsx kodu çalıştırır ama tipleri denetlemez; bunun için tsc --noEmit vardır.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
TypeScript, JavaScript'e esas olarak ne ekler?