CodeBlanks Logo Icon CodeBlanks

Non-null assertion

! 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

index.ts
// upper fonksiyonunu nullable string parametreyle yaz

// non-null assertion ile toUpperCase ifadesini döndür

// upper("hello") sonucunu yazdır

Örnek çözüm

index.ts
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

Soru
function upper(v: string | null): string {
  return ____;
}
Cevap
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

İleri seviye bölümündeki tüm dersler