Tanım
Type safety nedir?
Bir fonksiyonun veya verinin giriş ve çıkış tiplerinin açıkça tanımlanması ve bu tanımlara uyulduğunun derleyici tarafından denetlenmesidir.
Fonksiyon yalnızca tanımlanan tipte veriyi kabul eder ve yalnızca tanımlanan tipte veriyi döndürür. Böylece fonksiyonu yazan ile çağıran arasındaki beklenti nettir. Tip tanımı olmasaydı, örneğin number beklenen bir yerde string işlenebilir veya döndürülebilir ve hata ancak çalışma anında fark edilirdi.
function orderTotal(price: number, shipping: number): number {
return price + shipping;
}
Giriş tipleri uygun. Çıkış tipi number olarak tanımlı olduğundan sonuç da number: 150.
Ne sağlar
- Net sözleşme. Fonksiyonun ne aldığı ve ne döndürdüğü imzasından okunur.
- Erken hata tespiti. Uyumsuz çağrılar kod yazılırken ve derleme sırasında raporlanır.
- Güvenli değişiklik. Bir tip değiştiğinde etkilenen tüm noktalar derleyici tarafından listelenir.
- Editör desteği. Otomatik tamamlama ve öneriler tip bilgisine göre çalışır.
Tanımlanmazsa
- number beklenen yerde string işlenebilir veya döndürülebilir:
"120" + 30sonucu"12030"olur. - Hata derlemede değil, çalışma anında ve çoğunlukla production'da ortaya çıkar.
- Hatalı veri veritabanına yazılabilir ve o veriyi okuyan tüm istemcileri etkiler.
- Fonksiyonun davranışı ancak kod okunarak veya çalıştırılarak anlaşılır.
Sınırları
- Tipler yalnızca derleme anında denetlenir; derleme sonrasında koddan silinir.
- Dışarıdan gelen veri (request body) için ayrıca runtime validation gerekir (Durak 07).
- Tiplerin yazılması ve güncel tutulması ek emek gerektirir.
anykullanımı ve kapalıstrictmod korumayı zayıflatır.
Aşağıdaki beş örnek bu tanımı sırasıyla pekiştirir: tipsiz giriş, hatanın yakalandığı aşama, backend'deki etki, null ve strict mod, tiplerin çalışma anındaki sınırı.