✨ Zod를 사용하는 이유
Zod가 필요한 이유는 TS의 한계 때문.
TypeSciprt는 컴파일 시점에서의 타입 에러만 잡아낼 수 있고 런타임 단계에서의 타입 에러는 어쩔 수 없음, 런타임 단계에서 작동되는 것은 JS 이기 때문.
또한 TS는 number 타입만 입력 받도록 강제하는 것은 가능하나, 원하는 문자열이나 원하는 숫자 범위를 강제하거나 number 타입의 정수/실수 구분은 불가능. 이러한 TS의 한계를 위해 Zod를 사용
즉 우리가 zod를 사용하는 이유는
- 데이터 유효성 검사
- 스키마 정의
- zod는 데이터 객체의 스키마를 명시적으로 정의할 수 있는데, 이를 통해 어떤 종류의 데이터가 어떤 필드를 가져야 하는지, 어떤 필드가 옵셔널 하거나 필수 인지 등을 명확하게 표현 할 수있다.
- 타입 안정성 강화
- typescript와 함께 사용되므로 컴파일 시점에서 데이터 유효성 검사와 관련된 오류를 잡아내기 쉽다. 이로써 런타임에서 발생할 수 있는 유효성 검사 관련 버그를 사전에 방지 할 수 있다.
- 유연한 검증 로직
- zod는 다양한 검증 함수와 조합을 제공하여 복잡한 유효성 검사 규칙을 쉽게 구성할 수 있다.
이러한 기능을 가지고 있는 Zod는 우리가 사용할 react-hook-form과 함께 사용하면 시너지가 아주 좋을 것이라 예상된다.
그 이유는 form에서 처리해야 할 유효성 검사에 zod를 활용하면 더욱더 안전한 검증이 가능할 것이라 판단이된다.
zod와 react-hook-form을 같이 사용했을 때의 이점을 찾아봤는데 내 예상과 같이 위에 정의된 3, 4번과 + 유효성 검사 로직을 폼 상태 관리 로직과 분리할 수 있다는 장점이 있다.