0Pricing
TypeScript Academy · Ders

TupleToUnion ve UnionToIntersection

Demetlerle birleşimler arasında programatik dönüşüm yapın

TupleToUnion ve UnionToIntersection, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 3. 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.

TupleToUnion: Kavram

TupleToUnion, bir demet türünü öğe türlerinin birleşimine dönüştürür — tek tek türlerden demet oluşturmanın tersidir.

type TupleToUnion<T extends readonly any[]> = T[number];
type A = TupleToUnion<[string, number, boolean]>; // string | number | boolean

T[number] Nasıl Çalışır

Bir demeti number ile dizinlemek, tüm sayısal dizinlere aynı anda erişir; TypeScript bunu öğe türlerinin birleşimi olarak ifade eder.

type Tuple = [string, number, boolean];
type Elements = Tuple[number]; // string | number | boolean

TupleToUnion ile as const

Değer dizilerinden birleşimler türetmek için as const dizileriyle birleştirin.

const COLORS = ["red", "green", "blue"] as const;
type Color = typeof COLORS[number]; // "red" | "green" | "blue"

UnionToIntersection: Kavram

Birleşimi kesişime dönüştürmek daha zordur ve tüm üyeleri toplamak için işlev türleriyle birlikte dağılımlı koşullu türler gerektirir.

type UnionToIntersection<U> =
  (U extends any ? (x: U) => void : never) extends (x: infer I) => void
    ? I
    : never;

İşlev Hilesi Neden Çalışır

Birleşim üyeleri üzerinde dağıtım yapmak, her birini bir işlev türünün içine sarar. TypeScript, yapısal kısıtı karşılamak için tüm parametre türlerinin kesişimini çıkarır.

type A = UnionToIntersection<{ a: 1 } | { b: 2 }>;
// { a: 1 } & { b: 2 }

UnionToTuple: Zor Bir Sorun

Birleşimi demete dönüştürmek teorik olarak mümkündür, ancak değerlendirme sırasına dayanır (TypeScript bunu garanti etmez) — üretimde kullanmaktan kaçının.

// Not reliable — union member order is unspecified
// Use TupleToUnion (safe) not UnionToTuple (fragile)

TupleToUnion'ın Pratik Kullanımı

Doğrulama için bir birleşim türü oluşturmak üzere bir dize değişmezleri demetindeki tüm geçerli anahtarları çıkarın.

const ALLOWED_METHODS = ["GET", "POST", "PUT", "DELETE"] as const;
type HttpMethod = typeof ALLOWED_METHODS[number];
function request(method: HttpMethod) { /* ... */ }

UnionToIntersection'ın Pratik Kullanımı

Bir birleşimdeki birden çok karışım arayüzünü tek bir birleşik türde birleştirin.

type Mixin1 = { log(): void };
type Mixin2 = { save(): Promise<void> };
type Combined = UnionToIntersection<Mixin1 | Mixin2>;
// { log(): void } & { save(): Promise<void> }

İlkel Türlerin Kesişimi

İlişkisiz ilkel türlerin kesişimi never üretir; çünkü hiçbir değer hem string hem de number olamaz.

type X = UnionToIntersection<string | number>; // never

Bunları Genel Tür Kısıtlarında Kullanma

Esnek ve tür güvenli API'ler oluşturmak için TupleToUnion ve UnionToIntersection türlerini genel tür kısıtları içinde birleştirin.

function merge<T extends object[]>(...args: T): UnionToIntersection<T[number]> {
  return Object.assign({}, ...args) as any;
}

Özet: Demet ↔ Birleşim ↔ Kesişim

TupleToUnion, T[number] dizinlemesini kullanır. UnionToIntersection, dağıtımlı işlev hilesini infer ile kullanır. Her ikisi de gelişmiş tür işleme için temel araçlardır.

Hızlı Denetim

TupleToUnion<[string, number]> nedir?

Öğrendikleriniz

TupleToUnion, demetlerden öğe birleşimlerini çıkarmak için sayısal dizinleme kullanır. UnionToIntersection, dağıtımlı işlev hilesini kullanır. Bunlar, gelişmiş TypeScript tür işlemenin temel kalıplarıdır.

Sıkça Sorulan Sorular

“TupleToUnion ve UnionToIntersection” dersi ücretsiz mi?

Evet — “TupleToUnion ve UnionToIntersection” 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.

“TupleToUnion ve UnionToIntersection” dersinde ne öğreneceğim?

Demetlerle birleşimler arasında programatik dönüşüm yapı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 3. dersidir.

“TupleToUnion ve UnionToIntersection” 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