CodeBlanks Logo Icon CodeBlanks

Optional mapped type

Mapped type ile özellikleri isteğe bağlı yapmayı öğrenirsin.

Optional mapped type

Mapped type ile T'nin tüm özelliklerini isteğe bağlı yapabilirsin. { [K in keyof T]?: T[K] } yazdığında, her özellik ? ile işaretlenir; değer verilmezse undefined olabilir. Bu, Partial utility type'ının temelidir.

type Kismi<T> = {
  [K in keyof T]?: T[K];
};
interface Uye { ad: string; yas: number; }
const u: Kismi<Uye> = { ad: "Can" };
// yas atlanabilir

Kısmi veri akışı

Optional mapped type, özellikle güncelleme veya kısmi veri akışında kullanışlıdır. Bir API'den yalnızca bazı alanlar geldiğinde, hepsini içeren bir tür yerine Kismi<T> kullanırsın. Gövde, eksik alanları undefined kontrolüyle atlar; tür güvenliği bozulmaz.

Uygulama Kısmi üye

Kismi<T> mapped type'ını { [K in keyof T]?: T[K] } olarak yaz. Uye arayüzünü ad: string ve yas: number ile tanımla. KismiUye türünü Kismi<Uye> olarak tanımla. u değişkenine { ad: "Can" } nesnesini (tür KismiUye) ata. u.ad'ı console.log ile yazdır.

Başlangıç kodu

index.ts
// Kismi<T> mapped type tanımla
// T'nin tüm özelliklerini isteğe bağlı yap, değer türü aynı kalsın
// Uye arayüzünü ad ve yas ile tanımla
// KismiUye türünü Kismi<Uye> olarak tanımla
// u değişkenine yalnızca ad içeren nesneyi ata
// ad değerini yazdır

Örnek çözüm

index.ts
type Kismi<T> = {
  [K in keyof T]?: T[K];
};
interface Uye {
  ad: string;
  yas: number;
}
type KismiUye = Kismi<Uye>;
const u: KismiUye = { ad: "Can" };
console.log(u.ad);

Beklenen çıktı

Can

Soru ve cevaplar

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

1 Aşağıdaki mapped type'ın sonucunda hangi nesne geçerlidir?

index.ts
type Kismi<T> = { [K in keyof T]?: T[K]; };
interface Uye { ad: string; yas: number; }
  • Hiçbir özellik içermeyen boş nesne dahil, herhangi bir alt küme Doğru cevap
  • Yalnızca ad özelliği olan nesne
  • Tüm özellikleri number olan nesne
  • Yalnızca tüm özellikleri içeren nesne

Açıklama: ? tüm özellikleri isteğe bağlı yaptığından herhangi bir alt küme (boş nesne dahil) geçerlidir. Tür değişmez; yalnızca zorunluluk kalkar.

2 ? işareti ekle

Soru
type Kismi<T> = {
  [K in keyof T]____: T[K];
};
Cevap
type Kismi<T> = {
  [K in keyof T]?: T[K];
};

Açıklama: Mapped type'ta tüm özellikleri isteğe bağlı yapmak için köşeli parantezden hemen sonra ? yazılır. ! zorunlu kılar; : zaten vardır; readonly değiştirilemezlik katar.

3 Optional mapped type parçaları

Kavram Anlamı
[K in keyof T]? Tüm özellikleri isteğe bağlı yapar
T[K] Değer türünü aynı tutar
{ ad: "Can" } Eksik alanlı geçerli nesne
type Kismi<T> Optional mapped type alias

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