Zod v4 업그레이드 핵심 내용 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
TypeScript 개발자, API/폼 검증 필요 시스템 설계자, 팀에서 타입 안전성을 확보하는 프론트엔드/백엔드 개발자
핵심 요약
- 성능 개선: 문자열/배열/객체 파싱 속도가 각각 14x, 7x, 6.5x 향상
- Zod Mini 도입: 클라이언트 사이드 앱에서 사용 가능한 더 작은 라이브러리 버전 제공
- JSON Schema 지원:
z.toJSONSchema()
로 스키마 자동 생성 및 메타데이터 포함 - 메타데이터 관리:
z.registry()
를 통해 타이틀/설명 등 추가 정보 저장 가능 - 재귀 스키마 지원:
z.array(Category)
처럼 직접 정의 가능
섹션별 세부 요약
1. 속도 향상
.extend()
및.omit()
에서의 TypeScript 컴파일 시간 개선- 복잡한 스키마에서의 타입 인스턴스 생성 횟수 감소
2. Zod Mini
- 클라이언트 사이드 앱에 적합한 더 작은 패키지 제공
- 함수 스타일 API 사용:
z.optional(z.string())
대신z.optional(z.string())
3. 오류 메시지 개선
z.prettifyError(err)
로 가독성 높은 오류 메시지 출력- 커스텀 오류 메시지 설정:
z.string().min(5, { error: "Too short." })
4. 재귀 스키마 정의
z.array(Category)
처럼 직접 정의 가능- 타입 추론 자동화:
type Category = z.infer
5. JSON Schema 지원
z.toJSONSchema(schema)
로 JSON Schema 자동 생성.describe()
및.meta()
필드 자동 포함 예시:
```json
{"type":"object","properties":{"name":{"type":"string","description":"Your name"},"points":{"type":"number","examples":[10,20]}},"required":["name","points"]}
```
6. 메타데이터 관리
z.registry()
로 여러 스키마에 대한 메타데이터 저장 가능- 전역 레지스트리 사용:
z.string().meta({ title: "Email", description: "Provide a valid email" })
7. 새로운 포맷 메서드
z.email()
,z.uuidv4()
,z.url()
등 직접 호출 가능- 파일 검증:
z.file().min(10_000).max(1_000_000).type("image/png")
8. 문자열 논리값 파싱
"true"
,"false"
,"1"
,"0"
에서 불리언 변환:z.stringbool().parse("1")
- 커스텀
truthy/falsy
설정:
```ts
z.stringbool({ truthy: ["yes", "enabled"], falsy: ["no", "disabled"] });
```
9. `refine()` 메서드 확장
.min()
등 다른 메서드와 연계 가능:
```ts
z.string().refine((val) => val.includes("@"), "Must be email-like").min(5);
```
10. 리터럴 유니언 간소화
z.literal([200, 201, 202, 204])
대신z.literal([200, 201, 202, 204])
11. 템플릿 리터럴 지원
z.templateLiteral(["hello, ", z.string()])
→hello, ${string}
- 숫자 및 단위 조합:
z.templateLiteral([z.number(), z.enum(["px", "em", "rem", "%"])])
12. 새로운 함수/메서드
z.int32()
,z.uint64()
등 고정 너비 숫자 지원.overwrite()
로 타입 변경 없이 변환 가능z.discriminatedUnion()
의 복잡 구조 지원
결론
Zod v4는 성능, 사용성, 확장성 측면에서 대규모 개선을 제공하며, 기존 사용자는 업그레이드를 통해 속도와 유지보수성을 향상시키고, 신규 사용자는 타입 안전성과 효율적인 검증 로직 구축에 적합한 선택이 될 수 있다.