- Statik tiplerin ne olduğunu ve hangi hataları önceden yakaladığını açıklamak
- TypeScript kodunun JavaScript'e nasıl dönüştüğünü anlatmak
tscve basit birtsconfig.jsonile proje kurmak.tsdosyalarını Node.js ya datsxile doğrudan çalıştırmak, tipleri isetsc --noEmitile 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?
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:
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.shop.ts:6:25 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
6 console.log(formatPrice('4.5'));
~~~~~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:
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));Hello, Aysel! You are 14.
greet.ts: type User, nesnenin yapısını tarif eder.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
nullkontrolü 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): stringbaş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
- 1TypeScript'i kur
Proje klasöründe
npm install --save-dev typescriptkomutunu çalıştır. Derleyicinode_modulesiçine kurulur venpx tscile çağrılır. - 2Ayar dosyasını oluştur
npx tsc --init, önerilen ayarlarla birtsconfig.jsondosyası oluşturur. - 3Kodu yaz
Kodunu
src/index.tsdosyasına yaz. - 4Derle ve çalıştır
npx tsctüm projeyi denetler ve JavaScript'idist/klasörüne yazar; ardındannode dist/index.jsile çalıştır.
{
"compilerOptions": {
"target": "es2022",
"module": "nodenext",
"strict": true,
"rootDir": "src",
"outDir": "dist"
}
}tsconfig.json. tsc --init daha fazla seçenek üretir ama temel olanlar bunlardır.| Seçenek | Ne yapar |
|---|---|
target | hangi JavaScript sürümünün üretileceğini seçer, örneğin es2022 |
module | modül sistemini seçer; nodenext modern Node.js'in kurallarını izler |
strict | tü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.
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Önemli noktalar
- TypeScript, JavaScript'e statik tipler ekler; hatalar kod çalışmadan önce bulunur.
- Tip belirtimi iki noktadan sonra yazılır:
price: number. tsctipleri denetler ve tipleri silinmiş sıradan JavaScript üretir; çalışma anında tip yoktur.- Proje ayarları
tsconfig.jsoniçinde tutulur;strict: trueher zaman açık olmalıdır. node file.tsvetsxkodu çalıştırır ama tipleri denetlemez; bunun içintsc --noEmitvardır.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.