Optional chaining
- TypeScript kursu
- Başlangıç
- Ders 64/89
- 4 dk
? 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); // undefinedprofile 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üvenliUygulama 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
// 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
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?
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
const bio = user.profile____bio;
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 |