CodeAventura
TypeScript
▸TypeScript en la práctica▸Manejo de errores tipado

Misión

Editor
Consola
La consola está vacía. Pulsa EJECUTAR para correr tu código.
23 / 24Manejo de errores tipado
Anterior

Manejo de errores tipado

El problema con try/catch

En TypeScript estricto, el error capturado en un catch es de tipo unknown:

Para usar el error, primero debes verificar su tipo:

Esto es tedioso y se repite en cada catch.

El patrón Result

Una alternativa elegante es el patrón Result: en vez de lanzar errores, devuelves un objeto que indica éxito o fallo.

Es una discriminated union con ok como discriminante:

¿Por qué Result en vez de throw?

throw/catchResult
Errores visibles en firmaNo — no sabes si una función puede lanzarSí — el retorno dice Result
TypeScript ayudaPoco — error es unknownMucho — narrowing automático
Flujo de controlSalta al catch más cercanoFlujo lineal, predecible
Cuándo usarErrores inesperados (bugs)Errores esperados (validación, negocio)

La regla: usa throw para errores inesperados (el servidor se cayó, un bug). Usa Result para errores que esperas (datos inválidos, usuario no encontrado).

Result con diferentes tipos de error

Puedes hacer el error más específico:

Encadenando Results

Cada paso devuelve un Result. Si algo falla, el error se propaga limpiamente.

Tu desafío 🚀

Tienes el tipo Result<T> definido. Crea:

  1. Una función dividir(a, b) que devuelva Result<number> — error si b es 0
  2. Una función buscarUsuario(id) que devuelva Result<{ nombre: string }> — error si id < 0
  3. Prueba ambas funciones y maneja los resultados con if (resultado.ok)

El patrón Result hace que los errores sean ciudadanos de primera clase en tu sistema de tipos. No más errores que se escapan silenciosamente.