Recibí el error de Catch clause variable type annotation must be 'any' or 'unknown' if specified.ts(1196)
con el siguiente código
import axios, { AxiosError } from "axios"; try { } catch(error: AxiosError) { throw Error(error); }¿Cómo arrojar un error de axios en TS?
Use AxiosError para lanzar el error
import { AxiosError } from 'axios'; catch (error) { const err = error as AxiosError console.log(err.response?.data) }Le sugiero que elimine el tipo de error como el siguiente:
import axios from 'axios'; try { // do what you want with axios // axios.get('https://example.com/some-api'); } catch (error) { // check if the error was thrown from axios if (axios.isAxiosError(error)) { // do something // or just re-throw the error throw error; } else { // do something else // or creating a new error throw new Error('different error than axios'); } }Acabo de crear un stackblitz para ello. Y si quieres tener una mirada más profunda solo echa un vistazo a este artículo
No puede escribir una anotación específica para la variable de la cláusula catch en mecanografiado, esto se debe a que en javascript una cláusula catch detectará cualquier excepción que se produzca, no solo las excepciones de un tipo específico.
En mecanografiado, si desea capturar solo un tipo específico de excepción, debe capturar lo que se arroje, verificar si es el tipo de excepción que desea manejar y, si no, lanzarlo nuevamente.
significado : primero verifique si el error que se arroja es un error de axios, antes de hacer algo.
try { // do something }catch (err) { // check if error is an axios error if (axios.isAxiosError(err)) { // console.log(err.response?.data) if (!err?.response) { console.log("No Server Response"); } else if (err.response?.status === 400) { console.log("Missing Username or Password"); } else if (err.response?.status === 401) { console.log("Unauthorized"); } else { console.log("Login Failed"); } } }