CodeBlanks Logo Icon CodeBlanks

strictNullChecks derin

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

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

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

Soru
function len(v: string | null): number {
  if (v !== ____) {
    return v.length;
  }
  return 0;
}
Cevap
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

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