피드로 돌아가기
Dev.toFrontend
원문 읽기
Type Cast 제거와 Zod Schema 도입을 통한 Runtime Type Safety 확보
Type-Safe API Clients in TypeScript Without a Code Generator
AI 요약
Context
TypeScript의 as Type Assertion이 네트워크 경계에서 실제 데이터 구조를 검증하지 못하는 한계 발생. API 응답 변경 시 런타임 에러가 발생함에도 컴파일 단계에서 이를 감지하지 못해 디버깅 비용이 증가하는 구조적 결함 존재.
Technical Solution
- Parse, don't validate 원칙 기반의 Runtime Validation 계층 구축
- Zod Schema를 Single Source of Truth로 설정하여 Runtime 검증과 Static Type(
z.infer)을 동기화하는 설계 unknown타입을 입력으로 받아 Schema 검증 후T타입으로 변환하는 GenericapiFetchWrapper 구현- Exception 기반 에러 처리 대신 Discriminated Union(
Result<T>)을 통한 명시적 에러 핸들링 강제 - Code Generator 없이 Schema 정의만으로 API Contract 위반 시 즉각적인 Boundary Error 발생 유도
실천 포인트
- API 응답에 `as Type` 사용을 금지하고 `unknown` 기반의 검증 로직 도입 검토 - Zod 등의 라이브러리를 활용해 Schema 정의와 Type 추출을 단일화하여 Type Drift 방지 - 에러 발생 가능성이 높은 네트워크 통신 결과값을 `Result` 타입으로 래핑하여 처리 누락 방지 - 대규모 API 스펙이 아닌 경우 Code Generator보다 경량 Schema Wrapper 우선 고려