카테고리 없음

zod에 대해서 알아보자

ougi 2025. 4. 27. 16:00
728x90

오늘은 공부해보려다 계속 밀어왔던 zod라는 라이브러리에 대해서 알아보려고 이렇게 글을 쓰게 되었습니다


zod란?

zod란 타입스크립트를 우선하는 스키마 선언 / 검증 라이브러리 입니다

유효성 검사를 해준다고 볼 수 있습니다

문법이 간결하면서 쉽지만 기능은 굉장히 강력하다고 합니다

 

스키마(schema)란?

데이터의 형태나 구조의 규칙을 정의한 것이라고 할 수 있습니다

왜 사용할까?

타입스크립트는 컴파일 시점에서의 타입 에러만 잡을 수 있다는 한계점이 존재한다고 합니다

그래서 런타임에서는 타입스크립트가 아무런 힘이 없어집니다

하지만 이런 한계점을 zod라는 라이브러리로 보완할 수 있다고 합니다

 

그리고 타입스크립트는 숫자 범위를 강제할 수 없고 정수 / 실수 구분도 불가능합니다

하지만 zod를 사용하면 가능하다고 합니다


사용법

npm i zod # npm

yarn add zod # yarn

pnpm i zod # pnpm

먼저 zod 라이브러리를 설치해줍니다

 

import z from 'zod';

const LoginSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8, { message: '비밀번호는 최소 8자 이상이어야 합니다.' }),
});

이런 식으로 스키마를 정의해줍니다

 

LoginSchema.parse({
    email: "s24024@gsm.hs.kr",
    password: "qwer1234",
});

유효성 검증 또한 간단하게 parse을 사용해서 진행하면 됩니다

유효성 검증을 통과하면 그대로 return을 시켜주고 유효성 검증에 실패하면 Error를 return 시켜줍니다

이 에러 안에는 왜 실패했는지에 대한 정보가 들어가있기 때문에 매우 유용합니다

 

import { z } from 'zod';

const LoginSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8, { message: '비밀번호는 최소 8자 이상이어야 합니다.' }),
});

type LoginSchemaType = z.infer<typeof LoginSchema>;

const loginData: LoginSchemaType = {
  email: 'hello@gsm.hs.kr',
  password: 'qwer1234',
};

이렇게 하면 타입 추론도 가능합니다 


글을 마치며

이렇게 간단하게 zod에 대해서 알아보았는데 생각보다 더 많은 기능을 제공하니 공식 문서를 더 읽고 공부해봐도 좋을거 같습니다

https://zod.dev/

 

GitHub - colinhacks/zod: TypeScript-first schema validation with static type inference

TypeScript-first schema validation with static type inference - colinhacks/zod

github.com

728x90