100log

About

Zod - TypeScript-first 스키마 선언 및 데이터 검증 라이브러리

TypeScript

Zod

Zod란?

Zod를 쓰는 이유

장점 정리

간단한 예시

main-img

Zod

Zod란?

ZodTypeScript-first 스키마 선언 및 데이터 검증 라이브러리다.

  • 스키마(schema): 데이터 구조(타입)와 제약 조건을 정의한 것
  • 즉, Zod는 "이 데이터가 어떤 구조와 규칙을 가져야 한다" 를 코드로 선언하고 런타임에서 실제 값이 그 규칙을 따르는지 검사할 수 있게 해준다.

Zod를 쓰는 이유

  1. 런타임 검증 가능

    • TypeScript 타입은 컴파일 타임에만 동작해서 런타임에서는 타입 안정성을 보장하지 못한다.
    • Zod는 런타임에서도 입력값을 검사할 수 있어서 API 요청 / 응답, 폼 입력값 등을 안전하게 다룰 수 있다.
  2. TypeScript와 완벽한 호환

    • Zod 스키마로 정의하면 z.infer를 통해 바로 타입을 뽑아 쓸 수 있다.
    • 즉, 타입 정의유효성 검증을 따로 작성할 필요 없이 한 번만 작성하면 된다.
  3. 간결한 문법

    • 다른 라이브러리보다 직관적이고 코드 양이 적다.
    • 타입스크립트 친화적으로 설계되어 있어 IDE 자동완성도 잘 된다.
  4. 강력한 기능

    • 기본적인 string, number, date 같은 검증뿐 아니라 커스텀 검증, 조건부 검증, union(여러 타입 중 하나) / intersection(여러 타입이 포함된 형태) 타입, 객체, 배열, nullable 등 지원이 가능하다.
    • 예: 이메일 형식, 최소 글자 수, 특정 패턴, regex 등

장점 정리

  • 런타임 검증 + 타입 정의를 동시에 하여 코드 중복을 줄인다.
  • API 안정성 강화 → 외부 데이터(REST, DB 등)를 받을 때 타입 안정 보장.
  • TypeScript interface 지원 → 스키마 기반으로 타입 자동 생성.
  • 테스트, 유지보수 용이 → 어디서 문제가 생겼는지 쉽게 디버깅 가능.
  • TypeScript와 매우 높은 호환성

간단한 예시

import { z } from "zod";

// 스키마 정의
const UserSchema = z.object({
    id: z.number(),
    name: z.string().min(2),
    email: z.string().email(),
});

// 타입 자동 생성
type User = z.infer<typeof UserSchema>;

// 런타임 검증
const result = UserSchema.safeParse({
    id: 1,
    name: "홍길동",
    email: "test@gmail.com",
});

if (!result.success) {
    console.error(result.error);
} else {
    const user: User = result.data;
}
profile_img백종민
1993
Seoul
커리어 발전을 위한 새로운 기회를 찾고있습니다.