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.