본문 바로가기
TypeScript/그 외

TS와 Zode 비교하기

by 1two13 2024. 1. 17.
728x90
반응형

목차

  1. 엄격한 유효성 검증을 위해 사용되는 Zod
  2. TypeScript
  3. 참고자료

 

 

JS를 쓰고 있는 나는 타입 정의를 위해 TS를 사용하고 있다. 근데 팀원 중 한 분이 Zod를 쓰고 싶어하시길래 도대체 장점이 뭐길래? 라는 의문점이 생겨 알아보기 시작했다. 


 

엄격한 유효성 검증을 위해 사용되는 Zod


Zod가 TS보다 강력한 이유는 엄격한 유효성 검증을 하기 때문이라고 생각한다. 

하지만 그 만큼 TS보다 작성해야하는 코드가 많다는 생각이 들었다. 어떤면에서 볼때는 강력하지만, 또 다른면에서 볼때는 오히려 난잡하다는 느낌이 들었기 때문이다. 하지만 그럼에도 불구하고 TS에 비해 강력하다고 느낀 강점은 아래와 같다. 

 

1. 데이터 스키마, 즉 데이터 구조와 형식을 정의하기 때문에 TS보다 더 강력한 타입 검증이 가능하다.

컴파일 시 스키마에서 정의한 수준의 타입 검사가 발생하기 때문이다.

import { z } from "zod"; const User = z.object({ ​​email: z.string().email(), ​​image: z.string().url(), ​​ips: z.string().ip().array(), });

2. 기본값을 설정할 수 있다. 

3. 정수형과 실수형을 구분할 수 있다. 

4. 허용되는 범위를 제한할 수 있다. 

import { z } from "zod"; const Url = z.string().url().max(200); const Age = z.number().int().min(18).max(80);

 

 

그럼에도 불구하고 TS보다 확연하게 작은 커뮤니티로 인해 받을 수 있는 스트레스..(이미 TS는 커뮤니티가 활발함에도 불구하고 종종 스트레스를 받아왔다..) 또한 더 많은 코드의 수(write less X)가 단점이라고 생각한다. 

 

 

TypeScript


TS는 이미 엄청나게 큰 커뮤니티가 있어 오류가 발생했을 때 도움을 받을 수 있다.

하지만 스키마에서 정의한 수준의 타입 검사는 일어나지 않기 때문에 Zod보다는 덜 엄격하다고 말할 수 있다. 

 


이미 TS로도 충분히 엄격한 타입을 검증하고 있다고생각하기 때문에  Zod는 장점도 있지만 내 생각에는 아직 굳이..?라는 생각이 있기는 하다. 그래도 Zod만의 장점이 있기 때문에 추후 사용 여부를 결정하게 된다면 내가 생각한 의견들을 말씀드려 보아야겠다. 

Zod를 사용해보고자 하는 마음으로 기울었다. 그 이유는 정말 엄격한 검증이 가능하기 때문이다. 예를 들어 비밀번호를 6개의 숫자로 지정하고 싶을 때, 일반적으로 number로 타입을 지정할 수 밖에 없다. 하지만 Zod를 사용하면 6개의 숫자가 아닌 경우에 명백한 에러를 호출할 수 있다는 장점이 있기 때문이다. 

 

 

 

참고자료


728x90
반응형

'TypeScript > 그 외' 카테고리의 다른 글

i18n을 사용하여 다국어 처리 하기  (0) 2024.06.26