타입스크립트 API 응답을 안전하게 만드는 방법: Zod 활용
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
타입스크립트 및 API 개발자, 중급 이상의 개발자(타입스크립트 기본 지식 필요)
핵심 요약
- Zod 라이브러리 사용으로 API 응답의 런타임 타입 검증을 가능하게 함.
- Quicktype 도구를 통해 JSON 응답을 타입스크립트 타입으로 자동 변환 가능.
- safeParse() 메서드로 타입 불일치 시 즉시 오류를 감지하고 처리할 수 있음.
z.enum
,z.object
,z.array
등의 Zod API 사용 예시 포함.
섹션별 세부 요약
1. 문제 정의: API 응답 변경으로 인한 앱 충돌
- API 백엔드가 변경될 경우 타입 불일치로 인해 앱이 예기치 않게 크래시 발생 가능.
- 개발자에게 명시적인 타입 검증 없이 응답 처리 시 오류 감지 어려움.
2. Zod 라이브러리 소개 및 사용 방법
- Zod는 JSON 응답의 타입을 런타임에 검증해 타입 안정성을 보장.
z.enum
,z.object
,z.array
등으로 타입 스키마 정의 가능.safeParse()
메서드로 검증 실패 시parsed.error.format()
을 통해 오류 정보 확인.
3. Quicktype 도구 활용한 타입 생성
- Rick and Morty API 응답 JSON을 Quicktype에 입력해 TypeScript 타입 생성 가능.
GenderSchema
,SpeciesSchema
,ResultSchema
등의 타입 생성 예시 포함.
4. 검증 로직 구현 및 테스트
fetchCharacters()
함수에서RickAndMortyTypesSchema.safeParse(json)
으로 검증 수행.- 검증 실패 시
console.error()
으로 오류 로깅, 성공 시data
객체로 타입 안전한 데이터 사용.
5. 오류 시뮬레이션 및 검증 결과
name
필드를 숫자로 강제 입력해 Zod가 타입 불일치를 감지하는 시나리오 테스트.- Zod는
❌ Invalid API response:
메시지와 함께 오류 포맷을 출력해 즉시 문제 발견 가능.
결론
- Zod와 Quicktype을 활용해 API 응답의 타입 안정성을 확보하고, 런타임 오류를 사전에 방지할 수 있음.
safeParse()
메서드와 Zod의 타입 스키마 정의 패턴을 응용해 안정적인 API 통신 구현 권장.- 예시로 사용된 Rick and Morty API는 Zod 적용 시 타입 안전성 향상 효과를 직접 확인 가능.