0Pricing
TypeScript Academy · Ders

Flatten ve UnwrapPromise Yardımcıları

İç içe genel yapıları açan türler yazın

Flatten ve UnwrapPromise Yardımcıları, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. 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.

Flatten Sorunu

JavaScript dizileri iç içe olabilir. Bir Flatten yardımcı türü, bir türdeki dizi sarmalayıcılarını özyinelemeli olarak kaldırarak en içteki öğe türünü döndürür.

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

Özyinelemesiz Düzleştirme (Tek Düzey)

Tek düzeyli düzleştirme, Array.prototype.flat(1) işlevini yansıtır — iç içeliğin tam olarak bir düzeyini açar.

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

Özyinelemeli Düzleştirme

Özyinelemeli sürüm, başka dizi sarmalayıcısı kalmayana kadar özyineleme yaparak Array.prototype.flat(Infinity) davranışını taklit eder.

type Flatten<T> = T extends (infer U)[] ? Flatten<U> : T;
type C = Flatten<boolean[][][]>; // boolean

UnwrapPromise: Tek Düzey

infer kullanarak tek bir Promise katmanını açın.

type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
type D = UnwrapPromise<Promise<string>>; // string
type E = UnwrapPromise<number>;          // number

Derin UnwrapPromise

İç içe promise'leri özyinelemeli olarak açın — bu, yerleşik Awaited türüne denktir.

type DeepUnwrap<T> = T extends Promise<infer U> ? DeepUnwrap<U> : T;
type F = DeepUnwrap<Promise<Promise<number>>>; // number

Flatten ve UnwrapPromise'ı Birleştirme

Birleşik bir tür, hem promise'leri hem de dizileri ele alır; bu, dizi döndüren zaman uyumsuz işlevler için yararlıdır.

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

type G = Simplify<Promise<string[][]>>; // string

Yerleşik Awaited<T>

TypeScript 4.5 ve sonraki sürümleri, Promise olmayan thenable'lar da dâhil olmak üzere thenable türlerini özyinelemeli olarak açan Awaited türünü sunar.

type H = Awaited<Promise<Promise<string>>>; // string
// Also handles custom thenables with .then()

Map Değerlerini Açma

Aynı infer kalıbı, Map içindeki değer türlerini çıkarır.

type MapValue<T> = T extends Map<any, infer V> ? V : never;
type I = MapValue<Map<string, number[]>>; // number[]

FlattenObject: İç İçe Arayüzleri Birleştirme

Tür düzeyinde bir nesne düzleştiricisi, iç içe nesne türlerini birleştirir — daha karmaşık olsa da derin yapılandırma birleştirme işlemleri için yararlıdır.

// This requires recursive mapped types + intersection spreading
// See the DeepPartial lesson for the base pattern

Pratik Kullanım: API Yanıtlarını Açma

Elle tür iddiaları yazmadan veri türünü elde etmek için iç içe API yanıt sarmalayıcılarını açın.

type ApiData<T> = { data: T; status: number };
type ExtractData<T> = T extends ApiData<infer D> ? D : T;
type J = ExtractData<ApiData<User[]>>; // User[]

Özet: Flatten ve Unwrap

Flatten ve UnwrapPromise, tür sarmalayıcılarını soymak için infer kullanan özyinelemeli koşullu türlerdir. Promise açma işlemleri için Awaited kullanın; diğer yapılar için özel özyineleme yazın.

Hızlı Denetim

Flatten ne döndürür?

Öğrendikleriniz

Flatten ve UnwrapPromise, genel tür sarmalayıcılarını soyan özyinelemeli koşullu türlerdir. Karmaşık iç içe türleri basitleştirmek için bunları birleştirin ve promise zincirleri için yerleşik Awaited türünü kullanın.

Sıkça Sorulan Sorular

“Flatten ve UnwrapPromise Yardımcıları” dersi ücretsiz mi?

Evet — “Flatten ve UnwrapPromise Yardımcıları” 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.

“Flatten ve UnwrapPromise Yardımcıları” dersinde ne öğreneceğim?

İç içe genel yapıları açan türler yazı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 2. dersidir.

“Flatten ve UnwrapPromise Yardımcıları” 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. DeepPartial ve DeepReadonly
  2. Flatten ve UnwrapPromise Yardımcıları
  3. TupleToUnion ve UnionToIntersection
  4. Bir Tür Yardımcı Kitaplığı Yayımlama
← TypeScript Academy Sayfasına Dön