← Tüm yazılar

TypeScript mi JavaScript mi? Tiplere gerçekten ihtiyacınız var mı?

Burncode Team 3 dk okuma

TypeScript birçok yeni JavaScript projesinde varsayılan tercih hâline geldi ve öyle olması gerektiğine dair makul bir argüman da var. Ancak “TypeScript eklemeli miyim?” sorusunun cevabı herkes için evet değil. Bu bir ödünleşim ve bütün bir kod tabanını buna bağlamadan önce gerçekte neyi neyle takas ettiğinizi anlamaya değer.

TypeScript aslında nedir?

TypeScript, üzerine isteğe bağlı bir tip sistemi eklenmiş JavaScript'tir. Normal JavaScript yazarsınız, ardından değişkenlerinizi, fonksiyon parametrelerinizi ve dönüş değerlerinizi bekledikleri veri yapısıyla etiketlersiniz. Bir derleyici bu tip tanımlarını kodunuz daha çalışmadan kontrol eder, ardından bunları kaldırarak JavaScript'in çalıştığı her yerde çalışan sade JavaScript üretir.

Temel fikir şu: Bir fonksiyonun sayı beklediği yere metin gönderdiğinizi çalışma anında öğrenmek yerine, kodu yazarken öğrenirsiniz. Editör entegrasyonu sayesinde çoğu zaman dosyayı kaydetmeden bile.

Tipler size gerçekte ne kazandırır?

  • Hatalar daha erken yakalanır. Yanlış argüman tipleri, özellik adlarındaki yazım hataları, null bir değeri ele almayı unutmak gibi bütün bir hata kategorisi, canlı ortamda bir kullanıcı yerine derleyici tarafından yakalanır.
  • Gerçekten isabetli otomatik tamamlama. Editörünüz bir nesnenin yapısını tam olarak bilir; bu yüzden tahmin yürütmek yerine gerçek özellikleri ve metotları önerir.
  • Daha güvenli yeniden düzenleme. Bir alanın adını ya da bir fonksiyonun imzasını değiştirdiğinizde, güncellenmesi gereken yerleri her çökmede tek tek bulmak yerine TypeScript hepsini işaretler.
  • Dokümantasyon işlevi gören tipler. Bir fonksiyonun imzası, yoruma gerek kalmadan ne beklediğini ve ne döndürdüğünü söyler. Üstelik yorumların aksine sessizce eskimez.

Bedeli ne?

Bunların hiçbiri bedava değil. Başlangıçta daha fazla kod yazarsınız: tip tanımları, arayüzler ve işler karmaşıklaştıkça generic'ler. Özellikle ileri düzey tip kalıplarına girdiğinizde gerçek bir öğrenme eğrisiyle karşılaşırsınız. Ayrıca TypeScript iş akışınıza bir derleme adımı ekler; bu da ters gidebilecek bir şey daha ve ekibe yeni katılan geliştiricilerin anlaması gereken bir konu daha demektir.

Küçük bir betik, hızlı bir prototip ya da bir hafta sonra çöpe atacağınız bir proje için bu ek yük genellikle buna değmez. Sade JavaScript hiçbir şey kaybettirmeden sizi daha hızlı ilerletir, çünkü korunması gereken uzun ömürlü bir şey yoktur.

TypeScript ne zaman hakkını verir?

Bir kod tabanının birden fazla geliştiriciyle çalışabilmesi ya da birkaç aydan uzun yaşaması gerektiği anda denge tersine döner. Tipler, verilerinize dair örtük varsayımları derleyicinin aktif olarak kontrol ettiği bir şeye dönüştürür. Bir ekip belirli bir büyüklüğü ya da bir proje ilk birkaç haftasını aştığında bunun önemi muazzamdır. Editörünüzde yakalanan bir tip hatası size birkaç saniyeye mal olur. Aynı hata canlı ortamda bulunduğunda ise bir hata ayıklama seansına, acil bir düzeltmeye ve belki de memnuniyetsiz bir müşteriye mal olur.

Pratik cevap

Bakımını yapmayı, geliştirmeyi ya da başka bir geliştiriciye devretmeyi beklediğiniz her şey için — ki gerçek ürünlerin çoğu bu tanıma uyar — TypeScript bu yatırıma değer. Gerçekten tek kullanımlık betikler için ise isteğe bağlıdır. Yeni web ve yazılım projelerinde varsayılan olarak TypeScript kullanmamızın sebebi de bu: Bir kod tabanı ne kadar uzun yaşarsa bir tip hatasının maliyeti o kadar katlanır ve geliştirdiğimiz şeylerin çoğu haftalarca değil, yıllarca kullanılmak üzere tasarlanır.