Optional mapped type
- TypeScript kursu
- Orta seviye
- Ders 34/89
- 4 dk
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 atlanabilirKı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
// 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
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?
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
type Kismi<T> = {
[K in keyof T]____: T[K];
};
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 |