🧪 yup vs zod

“타입스크립트에서 더 잘 맞는 스키마 검증 도구는?”


1. 🤔 yup의 한계

타입스크립트와의 궁합이 약한 이유

import * as yup from 'yup';

const schema = yup.object({
  name: yup.string().required(),
  age: yup.number().required(),
});

// 타입이 자동으로 안 잡힘
type User = { name: string; age: number }; // 직접 선언


2. ✅ zod의 강점

타입스크립트와의 궁합이 매우 좋은 이유

import { z } from 'zod';

const UserSchema = z.object({
  name: z.string(),
  age: z.number(),
});

// 자동 추론!
type User = z.infer<typeof UserSchema>;

3. ⚖️ 비교 정리

항목 yup zod
타입 자동 추론 ❌ 없음 ✅ 있음 (z.infer)
타입 선언 필요 ⛔ 수동 선언 필요 ✅ 불필요
타입-스키마 동기화 ❌ 불일치 가능 ✅ 항상 일치
유지보수성 👎 낮음 👍 높음
타입스크립트 궁합 ⚠️ 보통 🌟 매우 좋음