Switches exhaustivos y comprobaciones con never
Escriba uniones exhaustivas con switch y detecte los casos que falten mediante never; cree un helper assertNever seguro.
Switches exhaustivos y comprobaciones con never es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 1 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: Cree switches exhaustivos sobre uniones y utilice never para detectar casos que falten durante la compilación.
Switch exhaustivo
Las uniones discriminadas utilizan un campo kind común. Un switch sobre ese campo estrecha cada caso de forma segura.
type Circle = { kind: "circle"; radius: number }
type Square = { kind: "square"; size: number }
type Shape = Circle | Square
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius * s.radius
case "square":
return s.size * s.size
}
}Cuando las uniones crecen
Cuando se añade un miembro nuevo (por ejemplo, triangle), lo detectaremos con never para que el caso omitido no genere silenciosamente un error.
type Triangle = { kind: "triangle"; base: number; height: number }
// If we extend Shape but forget to add case, we want a compile-time error
// type Shape = Circle | Square | TriangleassertNever
El parámetro de assertNever debe ser de tipo never, de modo que, si una variante nueva llega al caso predeterminado, se produzca un error de compilación.
function assertNever(x: never): never {
throw new Error(`Unhandled case: ${String(x)}`)
}
function areaSafe(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius * s.radius
case "square":
return s.size * s.size
default:
return assertNever(s) // if Shape grows, compiler errors here
}
}Uniones literales
El mismo patrón se aplica a las uniones de literales de cadena: cubra todos los valores posibles y llame a assertNever en el caso predeterminado.
type Status = "idle" | "loading" | "success" | "error"
function toIcon(s: Status) {
switch (s) {
case "idle": return "⏸"
case "loading": return "⏳"
case "success": return "✅"
case "error": return "⚠️"
default: return assertNever(s)
}
}
// Alternative: const check
const _check: never = ((): Status => "idle")() as never // force compile-time check with careConsejos
Consejos: active noFallthroughCasesInSwitch; prefiera las uniones discriminadas; utilice el caso predeterminado únicamente para assertNever.
// Tips
// - Enable noFallthroughCasesInSwitch in tsconfig for safer switches
// - Prefer discriminated unions over boolean flags
// - Keep default branch only to call assertNever; avoid swallowing casesComprobación de assertNever
Comprobación rápida: ¿Cuál es el propósito de assertNever en un switch exhaustivo?
Repaso
Repaso: Las uniones discriminadas y los switches exhaustivos producen código más seguro. never y assertNever detectan los casos omitidos durante la compilación.
Preguntas frecuentes
¿La lección «Switches exhaustivos y comprobaciones con never» es gratis?
Sí — el texto completo de «Switches exhaustivos y comprobaciones con never» 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 «Switches exhaustivos y comprobaciones con never»?
Escriba uniones exhaustivas con switch y detecte los casos que falten mediante never; cree un helper assertNever seguro. 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 1 de 3.
¿Cuánto tiempo toma la lección «Switches exhaustivos y comprobaciones con never»?
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
- Switches exhaustivos y comprobaciones con never
- Funciones predicado y operador satisfies
- Refinamiento de uniones entre límites de funciones