zod에 대해서 알아보자
오늘은 공부해보려다 계속 밀어왔던 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에 대해서 알아보았는데 생각보다 더 많은 기능을 제공하니 공식 문서를 더 읽고 공부해봐도 좋을거 같습니다
GitHub - colinhacks/zod: TypeScript-first schema validation with static type inference
TypeScript-first schema validation with static type inference - colinhacks/zod
github.com
