CodeBlanks Logo Icon CodeBlanks

Optional chaining

? operatörüyle güvenli erişimi öğrenirsin.

Optional chaining nedir?

Optional chaining (?.), bir özelliğe güvenli erişim sağlar. Sol taraf null veya undefined ise kısa devre yapar ve hata fırlatmak yerine undefined döndürür.

interface User { name: string; profile?: { bio: string }; }
const u: User = { name: "Ada" };
console.log(u.profile?.bio);  // undefined

profile tanımlı değilse bile uygulama çökmez.

Güvenli ve güvensiz erişim

Normal erişim (.), sol taraf undefined ise hata fırlatır ve uygulama çöker. Optional chaining (?.), aynı durumda kısa devre yapar ve undefined döndürür. Zincir boyunca herhangi bir noktada kısa devre olabilir.

interface User { name: string; profile?: { bio: string }; }
const u: User = { name: "Ada" };
// u.profile.bio  hata fırlatır (profile undefined)
console.log(u.profile?.bio);  // undefined, güvenli

Uygulama Optional chaining ile şehir al

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

Başlangıç kodu

index.ts
// User arayüzü tanımla: name ve isteğe bağlı address
// address bir nesnedir, içinde city: string bulunur
// cityOf(u: User): string döndürür
// address varsa şehri döndür
// yoksa "bilinmiyor" döndür

Örnek çözüm

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

function cityOf(u: User): string {
  const city = u.address?.city;
  if (city === undefined) {
    return "bilinmiyor";
  }
  return city;
}

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

Beklenen çıktı

Bursa
bilinmiyor

Soru ve cevaplar

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

1 u.profile undefined iken u.profile?.bio ifadesi ne döndürür?

index.ts
interface User { name: string; profile?: { bio: string }; }
const u: User = { name: "Ada" };
console.log(u.profile?.bio);
  • hata fırlatır
  • boş string döndürür
  • null döndürür
  • undefined döndürür Doğru cevap

Açıklama: Optional chaining (?.) kısa devre yapar; sol taraf null veya undefined ise erişim yerine undefined döndürür, hata fırlatmaz.

2 Optional chaining işlecini tamamla

Soru
const bio = user.profile____bio;
Cevap
const bio = user.profile?.bio;

Açıklama: Optional chaining ?., profile null veya undefined ise kısa devre yapar ve bio'ya erişmeden undefined döndürür. . ise her zaman erişim yapar ve undefined ise hata fırlatır.

3 Optional chaining parçaları

Kavram Anlamı
?. Güvenli erişim operatörü
undefined Kısa devre sonucu
u.profile?.bio Güvenli zincirleme erişim
u.profile.bio Undefined ise hata fırlatır

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