Modül dersleri (1/2)
Koşullu Türler ve çıkarım
Koşullu türler, kalıtım ilişkilerine dayalı önemsiz tür kararlarını ifade etmenize olanak tanır. Sözdizimi, JavaScript'in üçlü operatörüne benzer:
T extends U ? X : YT türü U'ye atanabilirse, sonuç türü X olacaktır, aksi takdirde Y olacaktır.
Temel Koşullu Türler
Koşullu tür, derleme zamanında bir koşulu değerlendirir:
type IsNumber<T> = T extends number ? true : false;
type A = IsNumber<number>; // true
type B = IsNumber<string>; // falseBu model, esnek ve dinamik yardımcı program türleri oluşturmak için jeneriklerle birleştirildiğinde son derece güçlüdür.
infer ile Çıkarma yazın
Koşullu bir türün extends yan tümcesi içinde, derleyici tarafından çıkarılacak bir tür değişkenini bildirmek için infer anahtar sözcüğünü kullanabiliriz.
Örneğin, bir fonksiyonun dönüş tipini çıkarmak istiyorsak:
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type ExampleFunction = () => string;
type Return = GetReturnType<ExampleFunction>; // stringBu örnekte infer R, TypeScript'e işlevin dönüş türünü otomatik olarak belirlemesini ve bunu koşulun pozitif dalında R olarak kullanılabilir hale getirmesini söyler.
Kendin dene
Alıştırma 1: IsString Türü
T dizeyi genişletirse değişmez değer türünü true, aksi halde false değerini döndüren IsString<T> adlı genel bir tür oluşturun.
İpucu göster
Sözdizimi türünü kullanın IsString<T> = T extends string ? doğru : yanlış; türünü kontrol etmek için.
3 denemeden sonra çözüm mevcut
Alıştırma 2: infer ile Diziden bir türün çıkarılması
Bir T dizisinin öğe türünü çıkarmak için çıkarımı kullanan genel bir UnpackArray<T> türü tanımlayın. T bir diziyse (örneğin U[]), U'yu döndürün, aksi halde aynı T türünü döndürün.
İpucu göster
T genişletmelerini kullan (U sonucunu çıkar)[] ? U : T, çıkarılan tür değişkeni U'yu bildirmek ve döndürmek için.
3 denemeden sonra çözüm mevcut