Hızlı Özet (TL;DR)
JavaScript dinamik tipli bir dildir; bu esneklik küçük scriptlerde hız kazandırsa da, kurumsal projelerde Uncaught TypeError: Cannot read property 'x' of undefined gibi felaket çalışma zamanı (Runtime) hatalarına yol açar. TypeScript; JavaScript’e statik tip sistemi ekleyen bir üst kümedir (Superset). Hataları kod daha geliştirici editöründeyken (Compile Time) yakalar, otomatik tamamlama (IntelliSense) sunar ve büyük ölçekli refactoring operasyonlarını güvenli hale getirir.
JavaScript ve TypeScript Karşılaştırma Tablosu
İki teknoloji arasındaki temel mühendislik farkları:
| Kriter | Saf JavaScript | TypeScript |
|---|---|---|
| Tip Denetimi | Dinamik (Çalışma zamanında anlaşılır) | Statik (Derleme aşamasında doğrulanır) |
| Hata Yakalama Zamanı | Kullanıcı web sitesini kullanırken (Runtime) | Geliştirici kodu kaydederken (IDE / Compile) |
| Dokümantasyon ve Sözleşme | Belirsiz nesneler ve tahmin yürütme | interface ve type ile kesin sözleşmeler |
| Refactoring Güvenliği | Bir alanın adını değiştirmek cesaret ister | Tek tıkla tüm projede güvenle isim değiştirme |
| Geliştirici Üretkenliği | Kod ezberleme ve konsola log atma zorunluluğu | Güçlü otomatik kod tamamlama ve tip ipuçları |
Statik Tip Sistemi ile Hataları Nasıl Önleriz?
Aşağıdaki örnek, basit bir imla hatasının TypeScript tarafından nasıl engellendiğini göstermektedir:
// Müşteri veri modelinin kesin tanımı
interface IMusteri {
id: number;
adSoyad: string;
vergiNo: string;
bakiye: number;
}
function faturaKes(musteri: IMusteri, tutar: number) {
// TypeScript geliştirici 'bakiye' yerine yanlışlıkla 'bakye' yazarsa
// derleme anında altını kırmızı çizer ve projeyi derlemez!
if (musteri.bakiye < tutar) {
throw new Error("Yetersiz bakiye");
}
}
TypeScript’te Kaçınılması Gereken Anti-Pattern: any
TypeScript’e yeni başlayan ekiplerin yaptığı en büyük hata, tip uyuşmazlığı yaşadıklarında hemen : any yazmaktır. any kullanmak, TypeScript’in tüm güvenlik kalkanını o değişken için kapatmak anlamına gelir.
- Bilinmeyen tip durumlarında
anyyerine tip güvenli olanunknownkullanılmalı ve tip daraltma (Type Narrowing) uygulanmalıdır. tsconfig.jsondosyasında"strict": trueve"noImplicitAny": truekuralları her zaman açık tutulmalıdır.
Modern frontend (Astro, React, Vue) ve backend (Node.js) projelerinizde sıfır hata toleranslı kurumsal kodlama için Özel Yazılım Geliştirme sayfamızı ziyaret edebilirsiniz.