TypeScript Eşlenmiş Türlerine Giriş
TypeScript'teki eşlenmiş türler, var olan türleri dönüştürerek yeni türler oluşturmanın bir yolunu sağlar. Karmaşık tür işlemlerini yönetmek ve TypeScript uygulamalarında tür güvenliğini sağlamak için güçlü bir araçtır. Bu makale eşlenmiş türleri tanıtmakta, sözdizimlerini açıklamakta ve kullanımlarını göstermek için örnekler sunmaktadır.
Haritalanmış Türler Nelerdir?
Eşlenen türler, var olan bir türün her özelliğine bir dönüşüm uygulayarak yeni türlerin oluşturulmasına olanak tanır. Genellikle türleri esnek bir şekilde değiştirmek veya genişletmek için kullanılırlar. Eşlenen bir türün temel sözdizimi şudur:
type MappedType = {
[K in keyof T]: NewType;
};
Bu sözdiziminde:
T
orijinal tiptir.K
,T
içindeki her bir anahtarı temsil eder.NewType
her özelliğe atanan yeni tiptir.
Eşlenen Türlerin Temel Örneği
İşte belirli bir türün tüm özelliklerini salt okunur hale getiren eşlenmiş bir türün basit bir örneği:
type ReadOnly = {
readonly [K in keyof T]: T[K];
};
type User = {
name: string;
age: number;
};
type ReadOnlyUser = ReadOnly;
Bu örnekte, ReadOnly
eşlenmiş türü, User
türünün tüm özelliklerini salt okunur olacak şekilde dönüştürür ve tüm özelliklerin değiştirilemez olduğu yeni bir ReadOnlyUser
türüyle sonuçlanır.
Tür Dönüşümleriyle Eşlenen Türler
Eşlenen türler, türleri daha karmaşık şekillerde dönüştürmek için de kullanılabilir. Örneğin, tüm özellikleri isteğe bağlı yapan eşlenen bir tür:
type Partial = {
[K in keyof T]?: T[K];
};
type User = {
name: string;
age: number;
};
type PartialUser = Partial;
Bu örnekte, Partial
eşlenmiş türü, User
türünün tüm özelliklerini isteğe bağlı hale getirir ve her özelliğin isteğe bağlı olduğu yeni bir PartialUser
türüyle sonuçlanır.
Koşullu Türlerle Eşlenmiş Türleri Kullanma
Eşlenen türler, daha karmaşık tür işlemleri için koşullu türlerle birleştirilebilir. Örneğin, yalnızca belirli bir türün özelliklerini içeren bir tür oluşturma:
type OnlyStrings = {
[K in keyof T]: T[K] extends string ? T[K] : never;
};
type User = {
name: string;
age: number;
email: string;
};
type StringProperties = OnlyStrings;
Bu örnekte, OnlyStrings
eşlenmiş türü, string
türünde olmayan özellikleri filtreleyerek, yalnızca User
türünden dize özelliklerini içeren yeni bir StringProperties
türü oluşturur.
Gelişmiş Haritalanmış Türler
Eşlenen türler için gelişmiş kullanım örnekleri arasında çeşitli koşullara göre mevcut türleri değiştiren türler oluşturma yer alır. Örneğin, her özellik adına bir son ek ekleyen eşlenen bir tür:
type WithSuffix<T, S extends string> = {
[K in keyof T as `${string & K}${S}`]: T[K];
};
type User = {
name: string;
age: number;
};
type UserWithSuffix = WithSuffix<User, "Prop">;
Bu örnekte, WithSuffix
eşlenmiş türü, User
türünün her özellik adına bir son ek ekleyerek, özellik adlarının belirtilen son eke sahip olduğu yeni bir UserWithSuffix
türü oluşturur.
Çözüm
TypeScript'teki eşlenmiş türler, geliştiricilerin var olan türleri dönüştürerek yeni türler oluşturmasını sağlayan çok yönlü bir özelliktir. Eşlenmiş türleri anlayarak ve kullanarak, geliştiriciler karmaşık tür dönüşümlerini yönetebilir ve TypeScript kodlarında daha fazla tür güvenliği sağlayabilir. Eşlenmiş türler, TypeScript uygulamalarında tür tanımlarını geliştirmek ve özelleştirmek için güçlü yetenekler sunar.