strictNullChecks parametresi, TypeScript'in null ve undefined'ı ayrı türler olarak kabul edip etmeyeceğini belirler. Parametre devre dışı bırakıldığında (2.0 sürümünden önce varsayılan olarak), her türdeki değişkenler null ve undefined değerlerini hata vermeden alabilir. Eğer etkinleştirilirse (strictNullChecks: true), bu değerler açıkça belirtilmediği sürece diğer türlerle uyumsuz kabul edilir.
Örnek:
// strictNullChecks: false let name: string = null; // Tamam // strictNullChecks: true let title: string = null; // Hata! let title2: string | null = null; // Tamam, açık tür birleştirmesi
Sert kontrolün etkinleştirilmesi, null veya undefined alması beklenmeyen işlevler/yöntemler geliştirme aşamasında erken hata ayıklamaya yardımcı olur.
strictNullChecksetkinkennumbertüründeki bir değişkeneundefinedatanabilir mi?
Cevap: Hayır, eğer strictNullChecks etkinse, number türündeki bir değişkene undefined atanamaz — yalnızca türü number | undefined olarak açıkça belirtilirse mümkündür.
Örnek:
let count: number = undefined; // TS Hatası strictNullChecks: true iken let count2: number | undefined = undefined; // Tamam
Hikaye
Bir büyük node.js projesinde geliştiriciler, "geçişi kolaylaştırmak" için null/undefined ile sıkı kontrolü devre dışı bıraktılar. Sonuç olarak, bir yıl sonra API'nin bir işlevi sayısal bir değer yerine undefined döndürdü. İstemci kodu buna hazırlıklı değildi, bu da kullanıcı tarafında sıradan bir response.count + 1 hesaplamasında uygulamanın çökmesine neden oldu.
Hikaye
Bir e-ticaret projesinde, ürünler koleksiyonu sunucudan null olarak geldi, [] şeklinde değil. UI bileşeni bu ürünler üzerinde map yapmaya çalıştığında her biri için bir özellik çağırdı — render hatası oluştu. Sert kontrolün etkinleştirilmesi hemen hemen 40 benzer durumu ortaya koydu.
Hikaye
Büyük bir kütüphanede zamanla bazı bileşen API'si özelliklerinin "izin verilen" değerleri string | null | undefined oldu. Bu, bir dizi yanlış işleme neden oldu. Sert kontrolün etkinleştirilmesi, belirli konfigürasyonlarda arayüz çökmesine neden olan belirgin olmayan hataları yakalamaya yardımcı oldu.