Skip to content

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),
});