Errores tipados
En vez de exceptions al aire, usa Result<T> o errores discriminados para manejar fallos con claridad.
Conceptos clave
- Errores esperables vs inesperados
- Mensajes para usuarios vs logs
- Mapear errores a HTTP status
Ejemplo
type Err = { code: 'NOT_FOUND' | 'VALIDATION'; message: string };
type Result<T> = { ok: true; data: T } | { ok: false; error: Err };
function getCourse(slug: string): Result<{ slug: string }> {
if (!slug) return { ok: false, error: { code: 'VALIDATION', message: 'slug requerido' } };
return { ok: true, data: { slug } };
}
Ejercicio
- Define un error union para AUTH, VALIDATION, NOT_FOUND.
- Implementa un handler que convierta code a status.
Checklist de mastery
- Puedo modelar errores como datos.
- Tengo un contrato consistente en APIs.