Exhaustividad con never (introducción)
Utilice never para exigir switches exhaustivos sobre uniones y detectar pronto los casos que falten.
Exhaustividad con never (introducción) es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 3 de 3. 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 3 lecciones en total.
Introducción
Objetivo: Asegurarse de que el switch gestione todos los miembros de una unión. El tipo never ayuda al compilador a avisarle cuando falta un caso nuevo.
Configuración de la unión
Cree una unión discriminada con una etiqueta literal (por ejemplo, kind) sobre la que realizar el switch posteriormente.
type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };
type Shape = Circle | Square;Switch no exhaustivo
La ausencia de una ramificación no impide la compilación, pero la lógica queda incompleta. Necesitamos una forma de provocar un error durante la compilación cuando falte un caso.
function areaBad(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
// OOPS: forgot "square" -> no compile error yet
}
return 0; // silently wrong
}
console.log(areaBad({ kind: "circle", radius: 2 }));Ayudante assertNever
Defina assertNever: solo acepta never. Si un valor llega hasta él, el switch no era exhaustivo y el compilador lo señalará.
function assertNever(x: never): never {
throw new Error("Unhandled case: " + JSON.stringify(x));
}Switch exhaustivo
Añada un default que invoque a assertNever. Cuando aparezca un nuevo miembro de la unión, el compilador le obligará a gestionarlo.
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
case "square":
return s.size * s.size;
default:
return assertNever(s); // compiler error if a member is unhandled
}
}
console.log(area({ kind: "square", size: 3 }));Directrices
Directrices:
- Utilice un discriminante (como
kind) en los miembros de la unión. - Mantenga el patrón default + assertNever.
- Prefiera tipos de retorno claros para que los casos ausentes sean evidentes.
Comprobación de exhaustividad
Comprobación rápida: ¿Cómo se consigue que un switch sobre una unión discriminada sea exhaustivo?
Resumen
Resumen: never indica un valor imposible. Utilice assertNever en la rama default para forzar switches completos y preparados para el futuro.
Preguntas frecuentes
¿La lección «Exhaustividad con never (introducción)» es gratis?
Sí — el texto completo de «Exhaustividad con never (introducción)» 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 3 lecciones en total.
¿Qué aprenderé en «Exhaustividad con never (introducción)»?
Utilice never para exigir switches exhaustivos sobre uniones y detectar pronto los casos que falten. 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 3.
¿Cuánto tiempo toma la lección «Exhaustividad con never (introducción)»?
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
- typeof, igualdad y reducción por veracidad
- in, instanceof y uniones discriminadas
- Exhaustividad con never (introducción)