Özet - Mapped types
- TypeScript kursu
- Orta seviye
- Ders 35/89
- 4 dk
Mapped types'larla kendi utility tipini yazarsın.
Özet - Mapped types
Mapped types, bir türün özellikleri üzerinde dönüp her birini dönüştüren tür yapılardır. [K in keyof T]: T[K] ile özellikleri kopyalar; readonly ile değiştirilemez; ? ile isteğe bağlı yaparsın. Bu üçünü birleştirerek kendi utility type'larını yazabilirsin.
type Guvenli<T> = {
readonly [K in keyof T]?: T[K];
};Uygulama Kendi utility tipin
Guvenli<T> mapped type'ını { readonly [K in keyof T]?: T[K] } olarak yaz. Ayar arayüzünü tema: string ve ses: number ile tanımla. GuvenliAyar türünü Guvenli<Ayar> olarak tanımla. a değişkenine { tema: "koyu" } nesnesini (tür GuvenliAyar) ata. a.tema'yı console.log ile yazdır.
Başlangıç kodu
// Guvenli<T> mapped type tanımla
// T'nin tüm özelliklerini hem readonly hem isteğe bağlı yap
// Ayar arayüzünü tema ve ses ile tanımla
// GuvenliAyar türünü Guvenli<Ayar> olarak tanımla
// a değişkenine yalnızca tema içeren nesneyi ata
// tema değerini yazdırÖrnek çözüm
type Guvenli<T> = {
readonly [K in keyof T]?: T[K];
};
interface Ayar {
tema: string;
ses: number;
}
type GuvenliAyar = Guvenli<Ayar>;
const a: GuvenliAyar = { tema: "koyu" };
console.log(a.tema);Beklenen çıktı
koyu
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir mapped type'ta hem değişmezlik hem isteğe_optionallık istiyorsun. Hangi yazım doğru?
- { [K in keyof T]: T[K]? readonly }
- { [readonly K in keyof T]?: T[K] }
- { [K in keyof T]: readonly T[K] }
- { readonly [K in keyof T]?: T[K] } Doğru cevap
Açıklama: readonly köşeli parantezden önce, ? ise hemen sonra yazılır. Böylece her özellik hem değiştirilemez hem isteğe bağlı olur. Diğer yazımlar sözdizimi hatası verir.
2 Birleşik mapped type gövdesi
type Guvenli<T> = {
____ [K in keyof T]?: T[K];
};
type Guvenli<T> = {
readonly [K in keyof T]?: T[K];
};
Açıklama: Tüm özellikleri değiştirilemez yapmak için köşeli parantezden önce readonly yazılır. ? zaten isteğe_optionallık için var; optional anahtar kelime değildir; static ve const farklı amaçlara hizmet eder.
3 Mapped type dönüştürmelerini eşleştir
| Kavram | Anlamı |
|---|---|
[K in keyof T]: T[K] |
Tüm özellikleri aynen kopyalar |
readonly [K in keyof T]: T[K] |
Tüm özellikleri değiştirilemez yapar |
[K in keyof T]?: T[K] |
Tüm özellikleri isteğe bağlı yapar |
readonly [K in keyof T]?: T[K] |
Hem değiştirilemez hem isteğe bağlı |