Promise'ten değer çıkarma
- TypeScript kursu
- Orta seviye
- Ders 41/89
- 4 dk
infer ile Promise'in değer türünü öğrenirsin.
Promise'ten değer çıkarma
Promise<infer V> kalıbı, bir Promise'in değer türünü V olarak çıkarır. T extends Promise<infer V> ? V : T deseni, T bir Promise'se değer türünü verir; değilse T'yi olduğu gibi döndürür. Bu, Awaited utility type'ının temelidir.
type Deger<T> =
T extends Promise<infer V> ? V : T;
type R = Deger<Promise<number>>;
// R: numberPromise olmayan türler
Deger<T>, T bir Promise değilse yanlış dala düşer ve T'yi olduğu gibi döndürür. Örneğin Deger<number>, number verir. Bu davranış, hem Promise hem Promise olmayan türlerle çalışan esnek yardımcılar yazmayı sağlar.
Uygulama Promise değer türünü çıkar
Deger<T> koşullu türünü yaz: T extends Promise<infer V> ? V : T. Sonuc türünü Deger<Promise<number>> olarak tanımla. a değişkenini Sonuc türünde tanımla ve 42 ata. a'yı console.log ile yazdır.
Başlangıç kodu
// Deger<T> koşullu türünü tanımla
// T bir Promise ise değer türünü çıkar, değilse T'yi döndür
// Sonuc türünü Deger<Promise<number>> olarak tanımla
// a değişkenini Sonuc türünde tanımla, 42 ata
// a'yı console.log ile yazdırÖrnek çözüm
type Deger<T> = T extends Promise<infer V> ? V : T;
type Sonuc = Deger<Promise<number>>;
const a: Sonuc = 42;
console.log(a);Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Deger<Promise<string>> ne üretir?
type Deger<T> = T extends Promise<infer V> ? V : T;
type R = Deger<Promise<string>>;- Promise<string>
- any
- never
- string Doğru cevap
Açıklama: T bir Promise olduğundan kalıp eşleşir ve V, Promise'in değer türü olan string olur. Doğru dal V'yi döndürür. Promise<string> yanlış dal; never ve any bu durumda geçersiz.
2 Promise değerini çıkar
type Deger<T> =
T extends Promise<____ V> ? V : T;
type Deger<T> =
T extends Promise<infer V> ? V : T;
Açıklama: Promise'in değer türünü çekmek için Promise<infer V> kalıbı kullanılır. type, let ve const değer/tür bildirimi içindir; new bir ifade operatörüdür; infer ile çıkarım yapılır.
3 Promise infer parçaları
| Kavram | Anlamı |
|---|---|
Promise<infer V> |
Promise değer türünü yakalar |
? V |
Doğru dal: değer türü |
: T |
Yanlış dal: T olduğu gibi |
Deger<Promise<number>> |
Kullanım örneği |