타입 흐름 개요
컴파일 타임
TypeScript로 타입 체크 개발 중 에러 방지
런타임
Zod로 실제 데이터 검증 잘못된 데이터 차단
데이터베이스
PostgreSQL 제약조건 데이터 무결성 보장
API 경계
Request/Response 검증 안전한 데이터 교환
레이어별 타입 안전성
1. Entity → TypeScript
Entity 정의가 TypeScript 타입으로 변환됩니다.2. Entity → Zod 스키마
Entity 정의가 Zod 스키마로 변환되어 런타임 검증을 제공합니다.3. Entity → PostgreSQL
Entity 정의가 PostgreSQL 테이블 스키마로 변환됩니다.API 레이어 타입 안전성
Model → API Client
Model의 메서드가 타입 안전한 API 클라이언트로 변환됩니다.Request 검증
API 요청은 Zod 스키마로 자동 검증됩니다.Fastify 라우터에서
Response 타입
API 응답도 타입 안전합니다.TanStack Query 타입 안전성
TanStack Query hooks도 완벽한 타입 안전성을 제공합니다.Subset 타입 안전성
Subset 쿼리도 완벽한 타입 추론을 제공합니다.전체 스택 타입 흐름 예시
실제 CRUD 작업에서 타입이 어떻게 흐르는지 보여줍니다.1
1. Entity 정의
user.entity.json
2
2. Model 작성
user.model.ts
3
3. 프론트엔드 사용
UserForm.tsx
4
4. API 요청
5
5. 데이터베이스 저장
6
6. 응답 반환
타입 불일치 방지
Sonamu의 E2E 타입 안전성은 흔한 타입 불일치 문제를 방지합니다.API 응답 타입 불일치
API 응답 타입 불일치
문제: API가 예상과 다른 타입 반환Sonamu 해결:
Request 파라미터 불일치
Request 파라미터 불일치
문제: 클라이언트가 잘못된 파라미터 전송Sonamu 해결:
Enum 값 불일치
Enum 값 불일치
문제: 하드코딩된 문자열이 Enum과 불일치Sonamu 해결:
Nullable 처리 누락
Nullable 처리 누락
문제: nullable 필드를 null 체크 없이 사용Sonamu 해결:
