CodeBlanks Logo Icon CodeBlanks

Özet - null & undefined

Güvenli erişimle bir kullanıcı profil programı yazarsın.

Özet - Güvenli profil programı

Optional chaining ve nullish coalescing'i birleştirerek güvenli profil programları yazabilirsin. Önce ?. ile özelliğe güvenli erişir, sonra ?? ile varsayılan bir değer verirsin.

interface Profile { name: string; address?: { city?: string }; }
function cityOf(p: Profile): string {
  return p.address?.city ?? "bilinmiyor";
}

address yoksa veya city yoksa sonuç otomatik olarak "bilinmiyor" olur; uygulama asla çökmez.

Uygulama Güvenli profil programı yaz

Profile arayüzünü tanımla: name: string ve isteğe bağlı address. address bir nesnedir ve içinde isteğe bağlı city: string bulunur. findCity(p: Profile): string fonksiyonu yaz: address ve city varsa şehri döndür; aksi halde "bilinmiyor" döndür. İki örnek çağırıp sonucu yazdır.

Başlangıç kodu

index.ts
// Profile arayüzü tanımla: name ve isteğe bağlı address
// address bir nesnedir, içinde isteğe bağlı city bulunur
// findCity(p: Profile): string döndürür
// p.address ve p.address.city için güvenli erişim kullan
// city yoksa "bilinmiyor" döndür

Örnek çözüm

index.ts
interface Profile {
  name: string;
  address?: { city?: string };
}

function findCity(p: Profile): string {
  return p.address?.city ?? "bilinmiyor";
}

console.log(findCity({ name: "Ada", address: { city: "Bursa" } }));
console.log(findCity({ name: "Bob" }));

Beklenen çıktı

Bursa
bilinmiyor

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 address undefined iken p.address?.city ?? "bilinmiyor" ifadesi ne döndürür?

index.ts
interface Profile { name: string; address?: { city?: string }; }
const p: Profile = { name: "Ada" };
console.log(p.address?.city ?? "bilinmiyor");
  • undefined döndürür
  • hata fırlatır
  • "bilinmiyor" döndürür Doğru cevap
  • null döndürür

Açıklama: Önce optional chaining address undefined olduğu için kısa devre yapar ve undefined döndürür. Sonra ?? operatörü undefined gördüğü için sağ tarafı alır.

2 Zincir ve varsayılanı tamamla

Soru
const city = p.address?.city ____ "bilinmiyor";
Cevap
const city = p.address?.city ?? "bilinmiyor";

Açıklama: address veya city null/undefined ise varsayılan vermek için ?? gerekir. || yanlış çünkü 0 veya boş string gibi geçerli değerleri de değiştirir; burada city string olduğu için risk oluşturur.

3 Birleşik model parçaları

Kavram Anlamı
?. Güvenli özellik erişimi
?? Varsayılan değer
null Bilinçli boş değer
undefined Atanmamış değişken

Başlangıç bölümündeki tüm dersler