Ana içeriğe geç
Modül 6 · Ders 1 ders 2Kurstaki 11/14~15 min
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:

TS
T extends U ? X : Y

T 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:

TS
type IsNumber<T> = T extends number ? true : false;

type A = IsNumber<number>; // true
type B = IsNumber<string>; // false

Bu 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:

TS
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

type ExampleFunction = () => string;
type Return = GetReturnType<ExampleFunction>; // string

Bu ö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ü

Egzersiz#ts.m6.l1.e1
Denemeler: 0Yükleniyor…

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.

Düzenleyici yükleniyor…
İ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ı

Egzersiz#ts.m6.l1.e2
Denemeler: 0Yükleniyor…

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.

Düzenleyici yükleniyor…
İ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