Mapped type nedir?
- TypeScript kursu
- Orta seviye
- Ders 32/89
- 4 dk
Türlerin üzerinde dönen mapped types'ı öğrenirsin.
Mapped type nedir?
Mapped type, bir türün tüm özellikleri üzerinde dönen ve her birini dönüştüren bir tür yapısıdır. [K in keyof T] sözdizimi, T'nin her anahtarı K için bir özellik üretir. Sağ taraftaki tür ifadesi, orijinal değerin türü T[K] ile oynayarak yeni tür üretir.
type Ayni<T> = {
[K in keyof T]: T[K];
};
// T'nin tüm özellikleri aynı türle
// kopyalanırMapped type'ın gücü
Mapped type, bir türü alıp her özelliğini aynı kurala göre dönüştürür. Değer türünü değiştirebilir, readonly ekleyebilir veya ? ile isteğe bağlı yapabilirsin. Bu, Partial veya Readonly gibi yerleşik utility types'ların temelidir; onları kendin de yazabilirsin.
Uygulama Tüm değerleri string yap
MetinYap<T> mapped type'ını yaz: { [K in keyof T]: string }. Ayar arayüzünü tema: string ve ses: number özellikleriyle tanımla. AyarMetin türünü MetinYap<Ayar> olarak tanımla. a değişkenine { tema: "koyu", ses: "acik" } nesnesini (tür AyarMetin) ata. a.tema'yı console.log ile yazdır.
Başlangıç kodu
// MetinYap<T> mapped type tanımla
// T'nin her özelliğini string değerli yap
// Ayar arayüzünü tema ve ses ile tanımla
// AyarMetin türünü MetinYap<Ayar> olarak tanımla
// a değişkenine uygun nesneyi ata
// tema değerini yazdırÖrnek çözüm
type MetinYap<T> = {
[K in keyof T]: string;
};
interface Ayar {
tema: string;
ses: number;
}
type AyarMetin = MetinYap<Ayar>;
const a: AyarMetin = { tema: "koyu", ses: "acik" };
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 Aşağıdaki mapped type ne yapar?
type NumYap<T> = { [K in keyof T]: number };- T'nin tüm özelliklerini readonly yapar
- T'nin tüm özelliklerini number türüne dönüştürür Doğru cevap
- T'nin tüm özelliklerini çıkarır
- T'nin tüm özelliklerini isteğe bağlı yapar
Açıklama: Sağ taraftaki tür number olduğundan, her özellik K için değer türü number olur. Özellik adları T'den gelir ama değer türü number'a dönüşür.
2 Mapped type gövdesi
type Dize<T> = {
[K in ____]: string;
};
type Dize<T> = {
[K in keyof T]: string;
};
Açıklama: Mapped type, T'nin anahtarları üzerinde dönmeli; bu yüzden [K in keyof T] yazılır. Yalnızca T bir sınır değildir; string tüm adları kabul eder; keyof K yanlış yöndedir.
3 Mapped type parçaları
| Kavram | Anlamı |
|---|---|
[K in keyof T] |
T'nin özellikleri üzerinde döner |
T[K] |
Orijinal özelliğin değer türü |
: string |
Yeni değer türü |
type NumYap<T> |
Mapped type alias |