Typescript, neden lazım?
Javascript ile web (front-end) ve sunucu (back-end) tarafında uygulamalar geliştirirken standartlara uygun, doğru ve hatasız kod yazmaya çalışıyoruz.
Uygulamamız büyümeye, çok fazla fonksiyon ve bileşen içermeye başladıkça hangi fonksiyon hangi tipte değerler alıyor, hangi tipte değerler döndürüyor hatırlamamız zorlaşıyor.
Mesela bir fonksiyon, object tipinde giren bir değere bazı işlemler uyguluyor ve sonucunda string tipinde bir değer döndürüyor.
Uygulamayı geliştirirken, object tipinde değer girmesi gereken fonksiyona, farketmeden array tipinde bir değer gönderebiliriz.
Bu muhtemel bir hataya sebep olabilir.
Can alıcı nokta, yanlış tipte değer gönderdiğimiz fonksiyonu o an çalıştırmadıysak veya test etmediyek bu hatayı farketmeyebiliyoruz.
Sonra
Uygulamamızı canlıya aldık diyelim, yani internet sitemizde yayına koyduk.
Bir kullanıcı bizim farketmediğimiz, yanlış tipte değer giren fonksiyonu çalıştıracak işlem yaptı. Crash!
Kullanıcı, hatalı fonksiyonu çalıştıracak işlem yapınca, ekran beyaz oldu ve uygulama çöktü, yani crash oldu. Kullanıcı sayfayı yenileyip tekrar denediğinde, yine crash olacak.
Neden
Fonksiyonda gelmesi gereken tipteki değere yapılan işlem, yanlış gönderilen tipteki değere yapılamıyor. Mesela, bir string'in yani yazının uzunluğu varken, bir object'in uzunluğu yoktur. adSoyad.length
dediğimizde yazının karakter uzunluğu dönerken, birObject.length
dediğimizde hata veriyor.
Dolayısıyla, fonksiyon "istenen işi bu değere yapamıyorum" diyerek hata veriyor ve işlemi tamamlayamıyor. Elbette bu hata, canlı ortamda kullanıcıya beyaz sayfa olarak görünüyor. Eğer biz geliştirme ortamında kullanıcını yaptığı işlemi yapmış olsaydık, hata mesajını görecek ve sorunu çözecektik.
Dahası
Yanlış tipteki değerleri yanlış işlemenin birçok yolu var elbette. Uygulama büyüdükçe, yapı kompleks hale geliyor ve hata yapma olasılığı artıyor.
Başka programalama dillerinde değerlerin tiplerini baştan belirtebiliyor ve o değerlerle işlem yaparken yanlış bir şey yaparsak, daha kodu çalıştırmadan bu hatadan haberdar olabiliyoruz.
Bu özellik, uygulama geliştirirken hatalı işlemler yapmamızı önlerken, fonksiyona giren-çıkan değerleri ve tipleri de auto-complete şeklinde bize sunarak konforumuzu ve hızımızı artırıyor.
Ne yazık ki, Javascript'de değerlere tip tanımlayabileciğimiz bir özellik yok.
Sonuç
Biz yine de Javascript'de değerlere tip tanımlayalım.
Bir de kütüphane geliştirelim. Biz kod yazarken tiplerle ilgili hatalar yaptığımızda bizi uyarsın. Böylelikle kodu çalıştırmaya bile gerek kalmadan, bir tip hatası yaptığımızda atlamayalım ve olası sorunları baştan giderelim.
Uygulamayı canlıya alacağımız zaman da bir derleyici program ile yazdığımız tip tanımlamalarını sildirir, normal Javascript koduna çeviririz. Uygulamamızı, tarayıcılarda da çalışacak normal javascript olarak yayınlarız.
Adında da Javascript (.js) değil Typescript (.ts) deriz.