0Pricing
TypeScript Academy · Ders

Uygulamalı infer Kullanım Alanları: Promise'leri Açma

Promise, Array ve özel sarmalayıcı türlerini açın

Uygulamalı infer Kullanım Alanları: Promise'leri Açma, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Sarmalayıcıdan Çıkarma Problemi

Asenkron kodla çalışırken sık sık Promise alır ve temelindeki T türüne ihtiyaç duyarsınız. infer anahtar sözcüğü bu çıkarma işlemini yeniden kullanılabilir hâle getirir.

type Awaited<T> = T extends Promise<infer U> ? U : T;
type A = Awaited<Promise<string>>; // string
type B = Awaited<number>;          // number

Yerleşik Awaited Yardımcı Türü

TypeScript 4.5, iç içe promise'leri özyinelemeli olarak işleyen yerleşik Awaited türünü kullanıma sundu.

type A = Awaited<Promise<Promise<string>>>; // string
// Handles arbitrary nesting automatically

Özel Derinlikle Sarmalayıcıdan Çıkarma

Awaited yerleşik hâle gelmeden önce geliştiriciler, promise'lerden sarmalayıcıları çıkarmak için infer içeren özyinelemeli türler kullanıyordu.

type DeepAwaited<T> =
  T extends Promise<infer U> ? DeepAwaited<U> : T;
type A = DeepAwaited<Promise<Promise<number>>>; // number

Dizi Öğelerini Sarmalayıcıdan Çıkarma

Aynı tür çıkarma kalıbı, yerleşik T[number] yaklaşımına eşdeğer olarak bir dizinin öğe türünü çıkarır.

type Element<T> = T extends (infer U)[] ? U : never;
type A = Element<string[]>; // string
type B = Element<number[]>; // number

Gözlemlenebilir Türlerini Sarmalayıcıdan Çıkarma

RxJS Gözlemlenebilirleri için tür çıkarma, yayımlanan türü çıkarır.

type ObservableType<T> = T extends Observable<infer U> ? U : never;
type A = ObservableType<Observable<User>>; // User

İşlev Dönüşünü Sarmalayıcıdan Çıkarma

Asenkron bir işlevin çözümlenen değerini elde etmek için ReturnType ve Awaited türlerini birleştirin.

async function getUser(): Promise<User> { /* ... */ }
type UserResult = Awaited<ReturnType<typeof getUser>>; // User

İç İçe Sarmalayıcıları Çıkarma

Promise> gibi birden çok katmanla sarılmış türleri işlemek için tür çıkarmayı zincirleyebilirsiniz.

type UnwrapPromiseArray<T> =
  T extends Promise<infer U>
    ? U extends (infer V)[]
      ? V
      : U
    : T;
type A = UnwrapPromiseArray<Promise<User[]>>; // User

Biçime Göre Koşullu Sarmalayıcıdan Çıkarma

Yalnızca belirli türlerdeki sarmalayıcıları koşullu olarak çıkarmak, diğerlerini değiştirmeden bırakmak için tür çıkarmayı kullanın.

type MaybeUnwrap<T> =
  T extends Promise<infer U> ? U : T extends (infer V)[] ? V : T;

type A = MaybeUnwrap<Promise<string>>;  // string
type B = MaybeUnwrap<number[]>;         // number
type C = MaybeUnwrap<boolean>;          // boolean

Türlendirilmiş API Getirme Sarmalayıcısı

Çözümlenen veri türünü döndüren genel bir getirme sarmalayıcısı, tür çıkarmaya dayalı sarmalayıcıdan çıkarmanın klasik bir uygulamasıdır.

async function fetchData<T>(url: string): Promise<T> {
  const res = await fetch(url);
  return res.json() as T;
}
type UserData = Awaited<ReturnType<typeof fetchData<User>>>; // User

Hatalara Dayanıklı Sarmalayıcıdan Çıkarma

Sonuç deseni, tür çıkarma ile birleştirildiğinde ayırt edicili birleşimden başarı türünü çıkarmanızı sağlar.

type Ok<T> = { ok: true; value: T };
type Err = { ok: false; error: string };
type ExtractOk<T> = T extends Ok<infer V> ? V : never;
type A = ExtractOk<Ok<number> | Err>; // number

Özet: Tür Çıkarmayla Sarmalayıcıdan Çıkarma

Tür çıkarma anahtar sözcüğü; promise'lerden, dizilerden, gözlemlenebilirlerden ve sonuç türlerinden tür çıkarmak için bir İsviçre çakısıdır. Yerleşik Awaited asenkron sarmalayıcıdan çıkarma işlemini yönetir; diğer yapılar için özel türler kullanın.

Hızlı Kontrol

Asenkron bir işlevin çözümlenen değer türünü elde etmenin en iyi yolu nedir?

Öğrendikleriniz

Tür çıkarmaya dayalı sarmalayıcıdan çıkarma, pratik TypeScript asenkron kodu için kullanışlı bir araçtır. Promise'ler için yerleşik Awaited türünü kullanın; diziler, gözlemlenebilirler ve sonuç kalıpları için özel sarmalayıcıdan çıkarma türleri oluşturun.

Sıkça Sorulan Sorular

“Uygulamalı infer Kullanım Alanları: Promise'leri Açma” dersi ücretsiz mi?

Evet — “Uygulamalı infer Kullanım Alanları: Promise'leri Açma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Uygulamalı infer Kullanım Alanları: Promise'leri Açma” dersinde ne öğreneceğim?

Promise, Array ve özel sarmalayıcı türlerini açın TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Uygulamalı infer Kullanım Alanları: Promise'leri Açma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Koşullu Türlerde infer'i Anlama
  2. ReturnType ve Parameters'ı Sıfırdan Oluşturma
  3. İç İçe Derin Çıkarım Örüntüleri
  4. Uygulamalı infer Kullanım Alanları: Promise'leri Açma
← TypeScript Academy Sayfasına Dön