TYPESCRİPT VE JAVASCRİPT FARKI NEDİR
JavaScript (JS) ve TypeScript (TS) arasındaki ilişkiyi anlamanın en kolay yolu, TypeScript’i JavaScript’in "zırh giymiş, disiplinli versiyonu" olarak düşünmektir.
Aralarındaki en temel fark; JavaScript'in çok esnek (bazen başa bela olacak kadar esnek) bir dil olması, TypeScript'in ise bu esnekliği kurallara bağlayarak daha güvenli hale getirmesidir.
İşte iki dil arasındaki temel farklar:
1. Temel Tanım ve İlişki (Superset Kavramı)
JavaScript, tarayıcıların doğrudan anladığı ve çalıştırdığı ana dildir. TypeScript ise Microsoft tarafından geliştirilen ve JavaScript'in üzerine inşa edilmiş bir üst kümedir (superset).
Önemli Kural: Yazılan her JavaScript kodu aynı zamanda geçerli bir TypeScript kodudur. Ancak tarayıcılar (Chrome, Safari, Edge) TypeScript kodunu doğrudan çalıştıramaz. TS kodu, önce derlenerek (compile edilerek) saf JavaScript'e dönüştürülür, ardından tarayıcıda çalışır.
2. Statik vs. Dinamik Tiplendirme (En Büyük Fark)
- JavaScript (Dinamik): Değişkenlerin türünü (yazı mı, sayı mı, nesne mi) önceden belirtmeniz gerekmez. Bir değişkene önce sayı, sonra aynı değişkene yazı atayabilirsiniz. Tarayıcı hatayı ancak kod o satıra gelip patladığında anlar.
- TypeScript (Statik): Değişkenlerin, fonksiyon parametrelerinin ve dönüş değerlerinin türlerini (veri tiplerini) açıkça belirtmek zorundasınızdır. Yanlış bir veri türü kullandığınızda, kod daha çalışmadan kod editörünüz (VS Code) sizi kırmızı çizgilerle uyarır.
Kod Üzerinden Örnek:
Bir toplama fonksiyonumuz olsun. Kullanıcı kazara sayı yerine yazı (string) gönderirse ne olur?
JavaScript
// JAVASCRIPT
function topla(a, b) {
return a + b;
}
topla(5, "10"); // Çıktı: "510" (Hata vermez, yan yana yazar. Bu bir bug'dır!)
TypeScript
// TYPESCRIPT
function topla(a: number, b: number) {
return a + b;
}
topla(5, "10"); // HATA! Kod derlenmez.
// Editör anında uyarır: "Argument of type 'string' is not assignable to parameter of type 'number'."
3. Karşılaştırma Tablosu
| Özellik | JavaScript (JS) | TypeScript (TS) |
|---|---|---|
| Dil Türü | Dinamik (Hafif ve Esnek) | Statik (Kurallı ve Güvenli) |
| Hata Yakalama | Runtime (Çalışma anında): Hatalar uygulama çalışırken, genellikle kullanıcı sitenizi gezerken fark edilir. | Compile-time (Derleme anında): Hatalar daha kodu yazarken editörde fark edilir. |
| Tarayıcı Desteği | Tüm tarayıcılar doğrudan çalıştırır. | Tarayıcılar anlamaz. Önce JS'e dönüştürülmesi gerekir. |
| Proje Ölçeği | Küçük ve orta ölçekli projeler veya hızlı prototipler için idealdir. | Büyük, karmaşık ve çok geliştiricili kurumsal projeler için şarttır. |
| Geliştirici Deneyimi | Otomatik tamamlama (IntelliSense) desteği daha zayıftır. | Refactoring (kodu yeniden yapılandırma) ve otomatik tamamlama mükemmel çalışır. |
Hangisini Seçmelisiniz?
- JavaScript'i Ne Zaman Seçmeli? Küçük projeler yapıyorsanız, hızlıca bir prototip ayağa kaldırmak istiyorsanız veya web geliştirmeye henüz yeni başladıysanız JS en doğru tercihtir.
- TypeScript'i Ne Zaman Seçmeli? Ekip halinde büyük bir proje geliştiriyorsanız (örneğin Next.js, React veya Angular kullanarak), kodun sürdürülebilir olması ve aylar sonra geri döndüğünüzde "Bu fonksiyon hangi veriyi alıyordu?" diye düşünmek istemiyorsanız TS kullanmalısınız. Günümüzde modern front-end dünyasında büyük projelerin neredeyse tamamı TypeScript ile yazılmaktadır.
