ProgramlamaFrontend geliştirici

StrictNullChecks parametresi TypeScript'te nasıl çalışır? Onun etkinleştirilmesi gündelik programlamayı nasıl etkiler?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

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.

Yanlış Yapan Bir Soru

strictNullChecks etkinken number türündeki bir değişkene undefined atanabilir 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

Konuyla ilgili yanlış bilgi sonucu gerçek hata örnekleri.


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.