strictNullChecks derin
- TypeScript kursu
- İleri seviye
- Ders 45/57
- 4 dk
strictNullChecks'in derin davranışını öğrenirsin.
strictNullChecks derin
strictNullChecks açıkken, null ve undefined diğer türlere atanamaz. Bu, özellik erişimini, yöntem çağrılarını ve dönüş türlerini etkiler. string | null bir değerin .toUpperCase() çağrısı derleme hatasıdır; önce null kontrolü gerekir.
function upper(v: string | null): string {
if (v === null) return "";
return v.toUpperCase(); // string
}
function bad(v: string | null): string {
return v.toUpperCase(); // hata: v null olabilir
}Akış analizi
TypeScript, akış analizi yaparak bir değişkenin bir noktada null olup olmadığını belirler. if koşuluyla null kontrolü yapıldıktan sonra, koşul sonrasında değişken non-null türe daraltılır. Bu, güvenli erişim sağlar.
function len(v: string | null): number {
if (v !== null) {
return v.length; // string
}
return 0;
}Uygulama strictNullChecks ile nullable işle
upper(v: string | null): string fonksiyonunu yaz. Eğer v === null ise "" döndür; değilse v.toUpperCase() döndür. console.log(upper("hello")) ve console.log(upper(null)) ile sonuçları yazdır.
Başlangıç kodu
// upper fonksiyonunu nullable string parametreyle yaz
// null ise boş dize, değilse toUpperCase döndür
// upper("hello") ve upper(null) sonuçlarını yazdırÖrnek çözüm
function upper(v: string | null): string {
if (v === null) {
return "";
}
return v.toUpperCase();
}
console.log(upper("hello"));
console.log(upper(null));Beklenen çıktı
HELLO
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 strictNullChecks açıkken string | null türünde bir değerin yöntemi doğrudan çağrılırsa ne olur?
- Değer undefined olur
- Derleme hatası: önce null kontrolü gerekir Doğru cevap
- Çalışma zamanı hatası
- Yöntem otomatik olarak çağrılır
Açıklama: strictNullChecks null olasılığını dikkate alır; string | null değerinde .toUpperCase() çağrısı derleme hatası verir çünkü null'ın yöntemi yoktur.
2 null kontrolüyle daraltma
function len(v: string | null): number {
if (v !== ____) {
return v.length;
}
return 0;
}
function len(v: string | null): number {
if (v !== null) {
return v.length;
}
return 0;
}
Açıklama: v !== null kontrolü, koşul gövdesinde v'yi string'e daraltır; strictNullChecks altında bu güvenli erişim sağlar.
3 strictNullChecks derin parçaları
| Kavram | Anlamı |
|---|---|
string | null |
null olasılığı taşır |
if (v === null) |
null dalını ayırır |
v.toUpperCase() |
null değilse güvenli |
akış analizi |
daraltmayı sağlar |