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 | booleanT[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 | booleanTupleToUnion 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>; // neverBunları 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
- DeepPartial ve DeepReadonly
- Flatten ve UnwrapPromise Yardımcıları
- TupleToUnion ve UnionToIntersection
- Bir Tür Yardımcı Kitaplığı Yayımlama