Zod v4 Upgrade: Key Features & Improvements for TypeScript D

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는 성능, 사용성, 확장성 측면에서 대규모 개선을 제공하며, 기존 사용자는 업그레이드를 통해 속도와 유지보수성을 향상시키고, 신규 사용자는 타입 안전성과 효율적인 검증 로직 구축에 적합한 선택이 될 수 있다.