Zod의 superRefine()은 복잡해지기 쉽다 #518
sunmerrr
started this conversation in
Today I Learned
Replies: 1 comment 1 reply
-
|
저도 복잡한 폼에서 zod superRefine을 사용한 경험이 있는데, 테스트코드가 정말 큰 도움이 되었어요. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
현재 프로젝트에 폼 유효성 검사를 Zod로 작성하면서,
필드 간 조건부 유효성 검사가 필요해 superRefine()을 사용했다.
처음에는 깔끔하고 유효성 검사도 쉬웠으나,
비즈니스 로직이 늘어나면서 점점 복잡해지고 if 문이 늘어나기 시작했다.
그러다보니 문제가 몇가지 생겼는데
superRefine()내부가 점점 거대한 if 블록 덩어리가 되고Schema.shape만 사용하는 쪽에서는 유효성 검사를 인식할 수 없다.결국 '스키마 외부에서 이 조건부 유효성 검사를 인지하지 못한다.'는 점이 가장 큰 문제로 다가온 것 같다.
되도록이면 지켰으면 하는 zod 규칙을 정해보았다.
shape으로 선언하기superRefine에 잘게 나눈 함수를 사용하기얼마나 개선 될지는 모르겠지만,
zod 에 모든 비즈니스 로직을 위임하기보다는 1차 검수자 정도로 둬서 '책임 범위'를 정해주면 유지보수가 조금 더 용이해지지 않을까 하는 생각이다.
Beta Was this translation helpful? Give feedback.
All reactions