TypeScript’te Mapped Type
Mapped tipler, mevcut tiplerin veya union’ların özelliklerini dönüştürerek yeni tipler oluşturmanıza olanak tanıyan güçlü TypeScript özelliklerindendir. Bu, tekrarları azaltmanıza ve tutarlı tip tanımları yapmanıza yardımcı olur.
Hadi bunu basit örneklerle inceleyelim.
Mapped Type Nedir?
Bir mapped type, mevcut bir tip veya union alır ve bunun anahtarları veya üyeleri üzerinde gezinerek yeni bir tip oluşturur.
Örnek: Union Tip Üzerinde Map İşlemi
type MappedType = 'primary' | 'secondary' | 'default'
type ObjMappedType = {
[Type in MappedType]: Type
}
// output:
type ObjMappedType = {
primary: "primary";
secondary: "secondary";
default: "default";
}
Bu işlem, `primary`, `secondary` ve `default` adında anahtarlara sahip, her biri kendi string değeriyle atanmış yeni bir tip oluşturur.
type Type = {
name: string;
surname: string;
age: number;
isManager: boolean;
}
type MappedType = {
[Key in keyof Type]?: Type[Key] | null
}
// output:
type MappedType = {
name?: string | null;
surname?: string | null;
age?: number | null;
isManager?: boolean | null;
}
Mapped Type Neden Kullanılır?
Var olan tipleri değiştirerek yeniden kullanma: Opsiyonel, null yapılabilir veya yalnızca okunabilir gibi varyantlar için yeniden tip tanımlamanıza gerek kalmaz.
DRY prensibi: Tip varyantlarını programlı şekilde oluşturarak kendinizi tekrar etmekten kaçınabilirsiniz.
Tip güvenliği: Tüm anahtarlar veya union üyeleri üzerinde tutarlı değişiklikler yapılmasını sağlar.
Özet
Mapped tipler, anahtarlar veya union üyeleri üzerinde gezerek tipleri dönüştürmenizi sağlar. Bu da esnek ve sürdürülebilir tip tanımlamaları yapmanıza olanak tanır.
Anahtar Noktalar
`[Key in keyof T]` ifadesi ile bir tipin anahtarlarında gezinebilirsiniz.
`[Type in Union]` ifadesi ile union üyeleri üzerinde gezinebilirsiniz.
Opsiyonel (?), sadece okunabilir (`readonly`) gibi değiştiriciler veya farklı tip atamaları ekleyebilirsiniz.
Geri