Zod와 Typescript

김동하·6일 전
0

typescript

목록 보기
21/21
post-thumbnail

Zod

요새 유효성 검사 라이브러리로 Zod를 많이 사용하고 있는데, Zod는 클래스를 활용하여 어떻게 복잡한 타입을 잘 숨겼는지 살펴보자

Zod의 타입 추론을 보면 ZodString으로만 나오는 것을 확인할 수 있다. Subclassing을 사용하여 복잡한 내부 타입을 감춘 것인데 어떻게 작동하는지 알아보자

클래스와 Zod

Zod는 클래스로 타입이 작성되었다. ZodType이라는 Base Class가 있고, 다른 클래스들이 Base를 상속받아서 사용하는 식이다. (Zod 내부 타입이 대충 아래처럼 되어 있다고 가정하자)

ZodString도 Base를 상속받아서 사용한다.

만약, 클래스를 사용하지 않고 type 키워드로만 구성한다면 어떻게 될까?

클래스였던 ZodType을 변경하고

마찬가지로 ZodString이 교차타입으로 ZodType를 받는다.

ZodString에 호버를 해보면 내부 타입이 전부 드러나는 것을 확인할 수 있다. TypeScript는 기본적으로 모든 타입을 보여주려 한다. 하지만 때로 복잡한 타입은 감추는 것이 개발에 도움이 될 때도 있다.

Subclassing

다시 클래스로 돌아가서, Zod는 두 단계의 제네릭으로 이루어져 있는데 ZodString 자체에는 제네릭이 없다. 대신, Base를 상속하여 제네릭 정보를 가져오는 것!

복잡한 내부 타입 개발 시 유용한 팁인 거 같다잉

profile
프론트엔드 개발

0개의 댓글