Template Literaller & Null
Template Literaller & Null: strictNullChecks açık bir TypeScript projesi, asansöre binmeden önce 'kat boş mu, dolu mu?' diye soran bir görevli gibidir — boş olabilecek bir katı (
strictNullChecks açık bir TypeScript projesi, asansöre binmeden önce 'kat boş mu, dolu mu?' diye soran bir görevli gibidir — boş olabilecek bir katı (null/undefined olabilecek bir değeri) kontrol etmeden kullanmaya çalıştığınızda sizi daha asansöre binmeden (derleme anında) durdurur. Peki Java'da zaten `NullPointerException` diye bir hata varken, TypeScript'in bunu önceden yakalaması neden bu kadar değerli? Çünkü Java'nın NPE'si tam olarak o satır çalıştığında, yani genelde production'da veya test koşarken patlar — milyonlarca 'Billion Dollar Mistake' (Tony Hoare'un kendi tabiriyle) buradan kaynaklanır; strictNullChecks ise aynı riski koda hiç yazılamayacak hale getirir. QA'da somut faydası: bir test yardımcı fonksiyonu `document.querySelector` ile bir elementi bulup hiç kontrol etmeden `.click()` çağırırsa, plain TypeScript (strict kapalı) veya JavaScript'te bu element bulunamazsa test çalışırken 'Cannot read property of null' ile çöker; strictNullChecks açıkken aynı kod derleyici tarafından 'önce null kontrolü yap' diyerek IDE'de durdurulur, test hiç çalıştırılmadan.
Micro Lab: TypeScript kod yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Null güvenliği — NullPointerException'a son
string | null — null olasılığı varsa TypeScript kullanmadan kontrol zorunlu kılar
Opsiyonel zincirleme
user.profile?.phone — profile yoksa undefined döner, exception fırlatmaz
value ?? "default" — yalnızca null/undefined'da devreye girer; 0 ve "" geçer
Null güvenli kod yazımının adımlarını sırala:
Değerin null olup olamayacağını belirle
string | null tipini kullan
?. ile güvenli erişim veya if kontrol yaz
?? ile varsayılan değer ver
const zero = 0; console.log(zero || "default") ile console.log(zero ?? "default") farkı nedir?