Lección 5 de 13 · Lectura y práctica
Unions + narrowing: manejar estados sin bugs
Unions y narrowing Aprende a modelar estados (loading/success/error) con unions y a usar narrowing para que el compilador te ayude. Conceptos clave Discriminated unions Type guards (in, typeof, custom) Exhaustive checks Ejemplo.
Esta es una lección del contenido anterior de Cursalo. Si ya estudiaste o compraste este curso, entra con tu cuenta para guardar tu progreso y abrir el resto de las clases. No necesitas comprar nada de nuevo.
Unions y narrowing
Aprende a modelar estados (loading/success/error) con unions y a usar narrowing para que el compilador te ayude.
Conceptos clave
- Discriminated unions
- Type guards (in, typeof, custom)
- Exhaustive checks
Ejemplo
type Result<T> =
| { ok: true; data: T }
| { ok: false; error: string };
function parseId(input: string): Result<string> {
if (!input.startsWith('u_')) return { ok: false, error: 'invalid id' };
return { ok: true, data: input };
}
const r = parseId('u_123');
if (!r.ok) {
console.error(r.error);
} else {
console.log(r.data);
}
Ejercicio
- Crea un union para estados de un request: idle/loading/success/error.
- Usa exhaustive check para garantizar que cubriste todos.
Checklist de mastery
- Puedo evitar null checks infinitos con unions.
- Se escribir type guards simples.