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
'프론트엔드 > TypeScript' 카테고리의 다른 글
| React + TypeScript로 축제 리스트 무한 스크롤 최적화하기 (0) | 2025.05.25 |
|---|