error 타입 모듈 AxiosError

2025. 5. 9. 12:10프론트엔드/TypeScript

728x90

🔍 1. any vs AxiosError 비교

✅ any를 쓸 경우

catch (err: any) {
  console.log(err.response.status); // ❌ 타입 보장이 안 됨, 자동완성 없음, 실수 가능성 큼
}
  • TypeScript의 타입 검사 우회를 허용하므로 IDE의 자동완성, 경고, 정적 분석 기능이 무력화됨
  • 에러 구조가 예상과 다르면 런타임 오류 발생 가능

✅ AxiosError를 쓸 경우

import { AxiosError } from 'axios';

catch (err: unknown) {
  const error = err as AxiosError;
  if (error.response?.status === 400) {
    // 명확하고 안전하게 상태코드 접근 가능
  }
}
  • error.response, error.code, error.config 등 axios 전용 속성에 안전하게 접근 가능
  • 타입스크립트의 자동완성정적 타입 검사를 제대로 활용할 수 있음
  • 코드 가독성과 유지보수성이 높아짐

🧠 부가 설명: AxiosError란?

interface AxiosError<T = any, D = any> extends Error {
  config: AxiosRequestConfig<D>;
  code?: string;
  request?: any;
  response?: AxiosResponse<T>;
  isAxiosError: boolean;
  toJSON: () => object;
}

→ 즉, 일반적인 JS의 Error 객체보다 훨씬 많은 정보를 담고 있는 Axios 특화 에러 타입입니다.

속성 이름 타입 설명

config AxiosRequestConfig<D> 이 오류가 발생한 Axios 요청의 설정 객체. 예: method, headers, url 등
code? string 에러 코드 (예: 'ECONNABORTED', 'ERR_NETWORK' 등). 일부 네트워크 오류에 유용
request? any 실제 네트워크 요청 객체 (브라우저의 XMLHttpRequest 또는 Node의 http request 등)
response? AxiosResponse<T> 서버가 응답을 보냈을 경우 포함됨. status, data, headers 등을 확인 가능
isAxiosError boolean 이 에러가 Axios에서 발생했는지 판별하는 Axios 전용 플래그 (true이면 Axios 에러임을 확정)
toJSON() () => object 에러 객체를 JSON으로 직렬화하는 함수 (로깅이나 디버깅 시 유용)

 


✅ 요약

항목 any AxiosError

타입 안정성 ❌ 없음 ✅ 있음
자동완성 지원 ❌ 없음 ✅ 있음
유지보수성 ❌ 낮음 ✅ 높음
에러 구조 이해 ❌ 불명확 ✅ 명확

필요하시면 AxiosError에 담긴 주요 속성들도 예시와 함께 더 설명드릴 수 있어요. 확인해 드릴까요?

728x90