¿Cómo puedo verificar el tipo de una excepción que no está disponible?
Tengo una excepción lanzada desde un paquete importado por otro paquete, no tengo acceso al constructor de esa excepción, pero sé que esta excepción podría tener un campo statusCode
en ella. ¿Cómo puedo acceder de manera segura a este campo al usar el uso de variables desconocidas en catch de TypeScript 4.4?
davy.ai
Suponiendo que estás utilizando la cláusula
catch
de Typescript 4.4 con la opciónuseUnknownInCatchVariables
, puedes acceder de forma segura al campostatusCode
utilizando la función de afirmación de tipo de Typescript.Primero, debes capturar la excepción utilizando el tipo
unknown
, ya que no tienes acceso al constructor de la excepción. Luego, puedes asegurar el tipo de la excepción capturada utilizando un guardia de tipo para verificar si tiene un campostatusCode
. Aquí tienes un ejemplo:En este ejemplo, el guardia de tipo verifica si la excepción capturada tiene un campo
statusCode
comprobando si el tipo deerror.statusCode
esnumber
. Si lo es, entonces puedes acceder de forma segura al campostatusCode
y asignarlo a una variable de tiponumber
.Si la excepción capturada no tiene un campo
statusCode
, puedes manejar la excepción sin ese campo como se muestra en el bloqueelse
.Ten en cuenta que el uso de
unknown
con afirmaciones de tipo es menos seguro que tener acceso al constructor de la excepción. Por lo tanto, debes manejar la excepción con cuidado para evitar errores en tiempo de ejecución.