Yan yana
JavaScriptvsTypeScript
JavaScript ile TypeScript arasındaki fark nedir?
Güncellendi 2 dk okuma7 fark
Kısaca
JavaScript, tarayıcıların ve Node.js'in çalıştırdığı dinamik tipli dildir; TypeScript ise ona statik tipler ekleyen ve JavaScript'e derlenen bir üst kümedir.
JavaScript
JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
JavaScript sayfasını okuTypeScript
TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
TypeScript sayfasını okuJavaScript ve TypeScript karşılaştırması
| Özellik | JavaScript | TypeScript |
|---|---|---|
| Tipleme | Dinamik: tipler yalnızca kod çalışırken denetlenir | Statik: tipler kod çalışmadan önce derleyici tarafından denetlenir |
| Çalıştığı yer | Tarayıcılar ve Node.js doğrudan çalıştırır | Çalışmadan önce JavaScript'e derlenir ya da tipleri ayıklanır |
| Tip hataları | Çalışma zamanında, testte ya da canlıda ortaya çıkar | Editörde ve derleme sırasında ortaya çıkar |
| Kurulum | Derleme adımı yok; bir <script> etiketi ya da node app.js yeterli | tsc derleyicisi, bir paketleyici ya da tipleri ayıklayan bir çalışma ortamı gerekir |
| Editör desteği | İpuçları çıkarıma ve JSDoc yorumlarına dayanır | Tiplerden gelen zengin otomatik tamamlama, güvenli yeniden adlandırma ve tanıma gitme |
| Öğrenme eğrisi | Daha kolay: başta öğrenilecek kavram az | Daha dik: tipler, generic'ler, arayüzler ve derleyici seçenekleri eklenir |
| En uygun olduğu yer | Küçük betikler, hızlı prototipler ve temelleri öğrenme | Büyük kod tabanları, ekipler ve uzun ömürlü uygulamalar |
Fark, açıklamalı
JavaScript web'in programlama dilidir: her tarayıcı onu çalıştırır, Node.js gibi çalışma ortamları da sunucularda çalıştırır. TypeScript, JavaScript'in bir üst kümesidir; yani geçerli her JavaScript programı aynı zamanda geçerli bir TypeScript programıdır ve buna name: string gibi isteğe bağlı tip bildirimleri eklenir.
Asıl fark, tip hatalarının ne zaman bulunduğudur. JavaScript tipleri yalnızca program çalışırken denetler; bu yüzden sayı beklenen yere bir metin vermek ancak canlıda bir hata olarak ortaya çıkabilir. TypeScript derleyicisi tipleri kod çalışmadan önce denetler, sonra tipleri silip düz JavaScript üretir; dolayısıyla tiplerin çalışma zamanında hiçbir maliyeti yoktur.
İkisi rakip değil, birbirinin üzerine oturan katmanlardır. TypeScript kodu sonunda her zaman JavaScript'e dönüşür, popüler kütüphanelerin çoğu tip tanımlarıyla birlikte gelir ve birçok proje dosyaları tek tek .js yerine .ts olarak yeniden adlandırarak kademeli geçiş yapar. Node.js'in yeni sürümleri ve bazı çalışma ortamları, tip bildirimlerini ayıklayarak .ts dosyalarını doğrudan bile çalıştırabilir.
Sık yapılan bir yanlış, TypeScript'in kodu hızlandırdığı ya da veriyi çalışma zamanında denetlediği düşüncesidir. Tipler derleme sırasında silinir; bu yüzden TypeScript bir API'den ya da formdan gelen veriyi doğrulayamaz, güvenilmeyen girdi için yine çalışma zamanı denetimlerine ihtiyaç vardır.
Hangisini kullanmalısınız?
JavaScript şu durumlarda doğru seçim:
- Küçük bir betik, prototip ya da tek seferlik bir araç yazıyorsunuz.
- Hiç derleme kurulumu istemiyor, kodu doğrudan çalıştırmak istiyorsunuz.
- Dilin temellerini hâlâ öğreniyorsunuz.
TypeScript şu durumlarda doğru seçim:
- Kod tabanı büyük ya da yıllarca bakımı yapılacak.
- Kodu birkaç geliştirici paylaşıyor ve net sözleşmelere ihtiyaç var.
- Hataları editörün kod çalışmadan yakalamasını istiyorsunuz.
- Sık yeniden düzenleme (refactor) yapıyorsunuz ve araç destekli güvenli değişiklikler istiyorsunuz.
Aynı fonksiyon, tipsiz ve tipli
// JavaScript: nothing stops a wrong call
function total(price, quantity) {
return price * quantity;
}
total(10); // runs and silently returns NaN// TypeScript: the mistake is caught before running
function total(price: number, quantity: number): number {
return price * quantity;
}
total(10); // Error: Expected 2 arguments, but got 1Sık sorulan sorular
TypeScript, JavaScript'ten daha mı iyi?
Genel olarak hiçbiri diğerinden iyi değildir. Hataları erken yakalamanın önemli olduğu büyük ya da uzun ömürlü projelerde TypeScript karşılığını verir; küçük betikler ve hızlı denemeler için düz JavaScript daha basittir.
TypeScript'ten önce JavaScript öğrenmem gerekir mi?
Pratikte evet. TypeScript, üzerine tip eklenmiş JavaScript'tir; söz dizimi, çalışma zamanı davranışı ve API'leri JavaScript'inkilerdir. Önce temel dili bilmek TypeScript'i çok kolaylaştırır.
TypeScript tarayıcıda çalışır mı?
Doğrudan çalışmaz. Tarayıcılar yalnızca JavaScript çalıştırır; bu yüzden bir derleme aracı, TypeScript'i tarayıcıya ulaşmadan önce JavaScript'e derler ya da tiplerini ayıklar.