CodeBlanks Logo Icon CodeBlanks

Özet - keyof ve typeof

Operatörlerle güvenli bir ayar yöneticisi yazarsın.

Özet - keyof ve typeof

keyof bir türün anahtarlarını, typeof bir değerin türünü verir. İkisini birleştirerek: typeof ile bir nesneden tür türet, keyof ile anahtarlarını al, dizin erişimiyle güvenli değer getiren fonksiyonlar yaz. Bu, ayar yöneticisi gibi yapılar için idealdir.

const ayarlar = { tema: "koyu", dil: "tr" };
type AyarTip = typeof ayarlar;
type AyarAnahtar = keyof AyarTip;
function al(k: AyarAnahtar): AyarTip[AyarAnahtar] {
  return ayarlar[k];
}

Uygulama Ayar yöneticisi

ayarlar değişkenine { tema: "koyu", dil: "tr" } nesnesini ata. AyarTip türünü typeof ayarlar olarak tanımla. AyarAnahtar türünü keyof AyarTip olarak tanımla. al(k: AyarAnahtar): AyarTip[AyarAnahtar] fonksiyonunu yaz; gövdesi return ayarlar[k]; olsun. al("tema") sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// ayarlar değişkenine { tema: "koyu", dil: "tr" } ata
// AyarTip türünü ayarlar'ın türü olarak tanımla
// AyarAnahtar türünü AyarTip'in anahtarları olarak tanımla
// al fonksiyonu AyarAnahtar parametre alsın
// dönüş türü AyarTip'in AyarAnahtar indeksi olsun
// gövde return ayarlar[k]; olsun
// tema anahtarının değerini al ile getir ve yazdır

Örnek çözüm

index.ts
const ayarlar = { tema: "koyu", dil: "tr" };
type AyarTip = typeof ayarlar;
type AyarAnahtar = keyof AyarTip;
function al(k: AyarAnahtar): AyarTip[AyarAnahtar] {
  return ayarlar[k];
}
console.log(al("tema"));

Beklenen çıktı

koyu

Soru ve cevaplar

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

1 Bir ayar nesnesinden güvenli özellik erişimi için hangi sıra izlenir?

  • dizin erişimi, keyof, typeof
  • typeof ile tür türet, keyof ile anahtar al, dizin erişimiyle değer getir Doğru cevap
  • keyof ile anahtar al, typeof ile tür türet, dizin erişimi
  • typeof, dizin erişimi, keyof

Açıklama: Önce typeof ile nesneden tür türetilir, sonra keyof ile anahtarlar alınır, son olarak dizin erişimiyle güvenli değer getirilir. Bu sıra bozulursa tür düzeyinde çıkarım çalışmaz.

2 Dizin erişim dönüş türü

Soru
const ayarlar = { tema: "koyu", dil: "tr" };
type AyarTip = typeof ayarlar;
type AyarAnahtar = keyof AyarTip;
function al(k: AyarAnahtar): ____ {
  return ayarlar[k];
}
Cevap
const ayarlar = { tema: "koyu", dil: "tr" };
type AyarTip = typeof ayarlar;
type AyarAnahtar = keyof AyarTip;
function al(k: AyarAnahtar): AyarTip[AyarAnahtar] {
  return ayarlar[k];
}

Açıklama: Dönüş değeri ayarlar[k] olduğundan ve k AyarAnahtar olduğundan dönüş türü AyarTip[AyarAnahtar] olmalıdır. Yalnızca AyarTip veya string çok dar/geniş; AyarAnahtar ise anahtar türüdür.

3 Operatörleri eşleştir

Kavram Anlamı
typeof ayarlar Değerden tür türetir
keyof AyarTip Türün anahtarlarını verir
AyarTip[AyarAnahtar] Anahtarın değer türü
al("tema") Güvenli değer getirme

Orta seviye bölümündeki tüm dersler