TupleToUnion y UnionToIntersection
Convierta programáticamente entre tuplas y uniones.
TupleToUnion y UnionToIntersection es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.
TupleToUnion: el concepto
TupleToUnion convierte un tipo tupla en una unión de sus tipos de elemento; es lo contrario de construir una tupla a partir de tipos individuales.
type TupleToUnion<T extends readonly any[]> = T[number];
type A = TupleToUnion<[string, number, boolean]>; // string | number | booleanCómo funciona T[number]
Indexar una tupla con number accede a todos los índices numéricos a la vez, lo que TypeScript expresa como una unión de tipos de elemento.
type Tuple = [string, number, boolean];
type Elements = Tuple[number]; // string | number | booleanTupleToUnion con as const
Combínelo con arrays as const para derivar uniones a partir de arrays de valores.
const COLORS = ["red", "green", "blue"] as const;
type Color = typeof COLORS[number]; // "red" | "green" | "blue"UnionToIntersection: el concepto
Convertir una unión en una intersección es más difícil y requiere tipos condicionales distributivos con tipos de función para recopilar todos los miembros.
type UnionToIntersection<U> =
(U extends any ? (x: U) => void : never) extends (x: infer I) => void
? I
: never;Por qué funciona el truco de la función
Distribuir sobre los miembros de una unión envuelve cada uno en un tipo de función. A continuación, TypeScript infiere la intersección de todos los tipos de parámetro para satisfacer la restricción estructural.
type A = UnionToIntersection<{ a: 1 } | { b: 2 }>;
// { a: 1 } & { b: 2 }UnionToTuple: un problema difícil
Convertir una unión en una tupla es teóricamente posible, pero depende del orden de evaluación (que TypeScript no garantiza); evítelo en producción.
// Not reliable — union member order is unspecified
// Use TupleToUnion (safe) not UnionToTuple (fragile)Uso práctico de TupleToUnion
Extraiga todas las claves válidas de una tupla de literales de cadena para crear un tipo unión destinado a la validación.
const ALLOWED_METHODS = ["GET", "POST", "PUT", "DELETE"] as const;
type HttpMethod = typeof ALLOWED_METHODS[number];
function request(method: HttpMethod) { /* ... */ }Uso práctico de UnionToIntersection
Combine varias interfaces mixin de una unión en un único tipo combinado.
type Mixin1 = { log(): void };
type Mixin2 = { save(): Promise<void> };
type Combined = UnionToIntersection<Mixin1 | Mixin2>;
// { log(): void } & { save(): Promise<void> }Intersección de tipos primitivos
Intersectar tipos primitivos no relacionados produce never, ya que ningún valor puede ser a la vez string y number.
type X = UnionToIntersection<string | number>; // neverUsar estos tipos en restricciones genéricas
Combine TupleToUnion y UnionToIntersection dentro de restricciones genéricas para crear API flexibles y seguras en cuanto a tipos.
function merge<T extends object[]>(...args: T): UnionToIntersection<T[number]> {
return Object.assign({}, ...args) as any;
}Resumen: Tuple ↔ Union ↔ Intersection
TupleToUnion utiliza la indexación T[number]. UnionToIntersection utiliza el truco de la función distributiva con infer. Ambos son herramientas esenciales para la manipulación avanzada de tipos.
Comprobación rápida
¿Qué es TupleToUnion<[string, number]>?
Lo que ha aprendido
TupleToUnion utiliza la indexación numérica para extraer uniones de elementos de las tuplas. UnionToIntersection utiliza el truco de la función distributiva. Estos son patrones fundamentales para la manipulación avanzada de tipos de TypeScript.
Preguntas frecuentes
¿La lección «TupleToUnion y UnionToIntersection» es gratis?
Sí — el texto completo de «TupleToUnion y UnionToIntersection» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.
¿Qué aprenderé en «TupleToUnion y UnionToIntersection»?
Convierta programáticamente entre tuplas y uniones. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «TupleToUnion y UnionToIntersection»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- DeepPartial y DeepReadonly
- Utilidades Flatten y UnwrapPromise
- TupleToUnion y UnionToIntersection
- Publicación de una biblioteca de utilidades de tipos