1. Zod 개요


zod 라이브러리가 필요한 이유는 TypeScript의 한계 때문이다.

2. 사용 이유


2-1) 런타임 단계에서의 에러

TypeScript는 컴파일 시점에서의 타입에러만 잡아낼 수 있고 런타임 단계에서의 타입 에러는 어쩔 수가 없다. 왜냐면 런타임 단계에서 작동되는 것은 JavaScript이기 때문이다.

2-2) 타입 범위 지정 불가

TypeScript는 number 타입만 입력받도록 강제하는 것은 가능하다. 하지만 원하는 문자열이나 원하는 숫자 범위를 강제하거나 number타입의 정수/실수 구분은 불가능하다.

이러한 TypeScript의 한계 때문에 zod라이브러리를 사용한다.

3. 스키마(Schema)


스키마란 데이터의 형태 및 구조라고 할 수 있다. 한 남성의 신상 정보에 대해 zod를 통해 스키마를 정의해 보겠다.

import { z } from "zod";

const Man = z.object({
  name: z.string(),
  height: z.number(),
  age: z.number(),
  phoneNum: z.string(),
  homePhoneNum: z.string().optional(),
  isCompletedMilitaryService: z.boolean(),
});

이렇게 zod를 통해 나에대한 정보를 객체 형식으로 나타내보았다.

zod 문법에 대해 배운적이 없더라도 바로 이해할 수 있을 정도로 직관적이다.