CodeBlanks Logo Icon CodeBlanks

Mapped ile üretim

Mapped types ile dize türü üretmeyi öğrenirsin.

Mapped ile üretim nedir?

Mapped type ile bir union üzerinde dönüp her üye için bir template literal değer üretebilirsin. [K in Union]: `veri_${K}` biçiminde her anahtar, kendi adını içeren bir dize türüne bağlanır. Bu, tür güvenli sözlük türleri üretmenin güçlü bir yoludur.

type Anahtar = "ad" | "yas";
type Deger = {
  [K in Anahtar]: `veri_${K}`;
};
// { ad: "veri_ad"; yas: "veri_yas" }

Key remapping ile anahtar üretimi

Mapped type'ta as anahtar kelimesi ile anahtarları yeniden adlandırabilirsin. [K in Kaynak as `get_${K}`] biçiminde, her kaynak anahtardan yeni bir template literal anahtar üretilir. Bu, getter/setter isimleri üretmek için idealdir.

type Kaynak = "ad" | "yas";
type Getir = {
  [K in Kaynak as `get_${K}`]: string;
};
// { get_ad: string; get_yas: string }

Uygulama Getter üreten mapped type

Kaynak adında union tanımla: "ad" | "yas". Getir adında mapped type tanımla: her K in Kaynak için [K in Kaynak as `get_${K}`]: string. g değişkeni Getir türünde ve değeri { get_ad: "Ali", get_yas: "30" } olsun. g.get_ad değerini console.log ile yazdır.

Başlangıç kodu

index.ts
// Kaynak adinda union tanimla
// Getir mapped type ile get_ onekli anahtarlar uret
// her anahtar string deger tursun
// g nesnesini tanimla
// g.get_ad yazdir

Örnek çözüm

index.ts
type Kaynak = "ad" | "yas";
type Getir = {
  [K in Kaynak as `get_${K}`]: string;
};
const g: Getir = { get_ad: "Ali", get_yas: "30" };
console.log(g.get_ad);

Beklenen çıktı

Ali

Soru ve cevaplar

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

1 [K in Anahtar]: `veri_${K}` mapped type ne üretir?

  • Tek bir birleşik dize
  • Her anahtar için template literal değer Doğru cevap
  • Boş bir nesne türü
  • Sayı dizisi

Açıklama: Mapped type her anahtar için ayrı bir template literal değer üretir; sonuç her anahtarı kendi dize değerine bağlayan bir nesne türüdür.

2 Key remapping değişkeni

Soru
type Kaynak = "ad" | "yas";
type Getir = {
  [K in Kaynak as `get_${____}`]: string;
};
Cevap
type Kaynak = "ad" | "yas";
type Getir = {
  [K in Kaynak as `get_${K}`]: string;
};

Açıklama: Mapped type'ta K döngü değişkenidir; key remapping sırasında template literal içine K yerleştirilir.

3 Mapped üretim kavramları

Kavram Anlamı
[K in Union] Mapped döngüsü
as Anahtar yeniden adlandırma
`get_${K}` Şablon anahtar
K Döngü değişkeni

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