TypeScript’te Koşullu Tipleri Anlamak
TypeScript’teki koşullu tipler, bir koşula bağlı olarak iki tipten birini seçmenizi sağlar. Yardımcı tipler oluştururken veya tip dönüşümleri yaparken son derece güçlüdürler.
Şu formatı takip ederler: `A extends B ? C : D`. Koşul doğruysa `C`, değilse `D` sonucu döner.
Temel Koşullu Tip Kontrolü
Bu örnek, bir tip olan `T`'nin `string` tipine atanabilir olup olmadığını kontrol eder. Eğer öyleyse `true`, değilse `false` döner.
type IsString<T> = T extends string ? true : false;
type A = IsString<'hello'>; // true
type B = IsString<123>; // false
infer ile Tip Çıkarma
Koşullu tipler, `infer` anahtar sözcüğüyle birlikte kullanılarak yapılardaki tipleri çıkarmak için kullanılabilir. Bu, özellikle dizi veya `Promise` gibi yapılardan tip almak için faydalıdır.
type Flatten<T> = T extends (infer U)[] ? U : T;
type A = Flatten<string[]>; // string
type B = Flatten<number>; // number
Nesne Yapısına Göre Koşullu Mantık
Koşullu tiplerle bir nesnenin yapısı incelenebilir ve belirli özelliklerine göre farklı tipler döndürülebilir.
type ConditionalProps<T> = T extends { isActive: true } ? 'Enabled' : 'Disabled';
type A = ConditionalProps<{ isActive: true }>; // 'Enabled'
type B = ConditionalProps<{ isActive: false }>; // 'Disabled'
Sonuç
Koşullu tipler, koşullara bağlı olarak dallanabilen daha esnek ve yeniden kullanılabilir tip mantıkları yazmamıza yardımcı olur.
Özellikle generic ve karmaşık veri yapılarıyla çalışırken güçlü yardımcı tipler yazmak için bu yapıyı iyi bilmek şarttır.
Geri