Non-null assertion
- TypeScript kursu
- İleri seviye
- Ders 47/57
- 4 dk
! operatörüyle null olmayan onaylamayı öğrenirsin.
Non-null assertion
! operatörü bir ifadeden sonra kullanıldığında non-null assertion yapar: TypeScript'e "bu değer null veya undefined değil" denir. Değer string | null ise, v! ifadesi string türüne daraltılır. Ancak çalışma zamanında gerçek bir kontrol yapılmaz; eğer değer null ise yine de hata oluşur.
function upper(v: string | null): string {
return v!.toUpperCase(); // assertion: v string
}Assertion vs kontrol
Non-null assertion ! ile gerçek bir null kontrolü if (v !== null) arasındaki fark, kontrollerin yapılıp yapılmadığıdır. if ile gerçek kontrol yapılır ve güvenlidir; ! ile sadece derleyiciye güvenilir, çalışma zamanında hata olabilir. ! yalnızca değer null olmadığından emin olduğunuzda kullanılmalıdır.
// Güvenli: gerçek kontrol
function safe(v: string | null): string {
if (v !== null) return v.toUpperCase();
return "";
}
// Riskli: assertion
function risky(v: string | null): string {
return v!.toUpperCase(); // v null ise çalışma zamanı hatası
}Uygulama Non-null assertion ile nullable işle
upper(v: string | null): string fonksiyonunu yaz. v!.toUpperCase() ifadesini döndür (non-null assertion kullan). console.log(upper("hello")) ile sonucu yazdır.
Başlangıç kodu
// upper fonksiyonunu nullable string parametreyle yaz
// non-null assertion ile toUpperCase ifadesini döndür
// upper("hello") sonucunu yazdırÖrnek çözüm
function upper(v: string | null): string {
return v!.toUpperCase();
}
console.log(upper("hello"));Beklenen çıktı
HELLO
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 v! ifadesi ne yapar?
- v'yi null yapar
- v'yi non-null türe daraltır (çalışma zamanı kontrolü yok) Doğru cevap
- v'yi undefined yapar
- Çalışma zamanında null kontrolü yapar
Açıklama: v! ifadesi TypeScript'e v'nin null olmadığını assertion yapar; derleme zamanında daraltır ama çalışma zamanında kontrol yapmaz, null ise yine hata oluşur.
2 Non-null assertion
function upper(v: string | null): string {
return ____;
}
function upper(v: string | null): string {
return v!.toUpperCase();
}
Açıklama: v!.toUpperCase() ifadesi, v'nin null olmadığını assertion yapar ve toUpperCase çağrısına izin verir; çalışma zamanı kontrolü yoktur.
3 Non-null assertion parçaları
| Kavram | Anlamı |
|---|---|
v! |
non-null assertion |
if (v !== null) |
gerçek kontrol |
çalışma zamanı |
kontrol yapılmaz |
! operatörü |
ifadeden sonra |