Zod로 데이터 스키마 정의하기

📘 Official Docs
Zod란?
Zod는 TypeScript 기반의 스키마 선언 & 데이터 검증 라이브러리다.
Zod가 해결하려는 문제는 단순하다.이 데이터가 어떤 구조인지, 그리고 올바른 값인지를 코드로 명확하게 정의하고 싶다.
Zod는 이를 위해:
- 데이터 구조를 스키마로 선언하고
- 런타임에서 데이터를 검증하며
- 동시에 TypeScript 타입을 자동으로 추론한다.
즉, 검증 + 타입 정의를 하나로 묶는 도구다.
왜 Zod를 사용할까?
기존 방식의 문제점
보통 TypeScript 프로젝트에서는 이런 식으로 코드를 작성한다.
ts
type LoginRequest = {
email: string;
password: string;
};문제는 이 타입이:
- 런타임에서는 아무 역할도 하지 못하고
- 실제 API 요청 데이터가 올바른지 검증하지 못한다
ts
const data: LoginRequest = {
email: 'not-an-email',
password: '123',
}; // 타입 에러 없음TypeScript의 타입은 컴파일 타임에만 존재한다.
실제 실행 시점에서는 데이터가 잘못되어도 막을 수 없다.
Zod의 해결 방식
Zod는 타입이 아니라 실제 실행되는 검증 로직을 제공한다.
ts
import { z } from 'zod';
const loginSchema = z.object({
email: z.string().email(),
password: z.string().min(8),
});