Manejo de Excepciones (try/catch)
try/catch funciona igual que en JavaScript — el código que podría fallar va dentro de try, y catch se ejecuta en vez de que el programa se caiga si algo lanza un error.
try {
const result = JSON.parse("not valid json");
} catch (error) {
console.log("Could not parse JSON!");
}Could not parse JSON!
Por qué el error capturado es unknown
JavaScript te permite lanzar literalmente cualquier cosa — un string, un number, un objeto Error real. Como TypeScript no puede saber de antemano qué producirá un throw determinado, tipa el valor capturado como unknown en vez de any, lo que te obliga a comprobar su tipo antes de usarlo.
try {
JSON.parse("not valid json");
} catch (error) {
if (error instanceof Error) {
console.log(`Error: ${error.message}`);
}
}Error: Unexpected token o in JSON at position 1
error instanceof Error reduce el tipo de unknown a Error, que es lo que realmente hace que error.message sea accesible — acceder a .message directamente en un valor unknown sería un error de compilación.
Siguiente: type narrowing — el patrón general detrás de esa comprobación instanceof, y las otras formas en que TypeScript reduce los tipos.