[Typescript] Superstruct 오류메시지 커스텀하기

728x90
반응형

[Typescript] superstruct 오류메시지 커스텀하기

서론

최근 필자는 Supersturct를 사용해보다가 Superstruct는 기본적으로 오류메시지를 커스텀할 수 없다는 점을 알게됐다. 이는, 개발자가 임의로 오류메시지를 수정하여 부정확한 validation 결과를 내보내지 못하도록 하는 Supersturct의 철학이라고 한다. 하지만 일상적인 상황에선 사용자에게 현재 발생한 오류에 따른 문구를 보여주어야 하는 상황이 더 많을 것이고, Supersturct는 이를 위한 대응을 지원하지 않는다.

이를 위한 해결방법을 찾다가 Superstruct GitHub issue에 괜찮은 아이디어를 발견하게 되어 이번 포스팅에서 소개해보고자 한다.

해결책: 오류 메시지 함수를 직접 만들어버리자

 

custom error messages · Issue #568 · ianstormtaylor/superstruct

Hey there, great work with superstruct. I was especially happy to see that it does not bloat the browser bundle like other validation libs do. One thing is holding me back to switch to superstruct ...

github.com

위 이슈에 남겨진 orhls님의 아이디어로, 아래와 같은 함수를 직접 만들어 invalid 상태에서의 메시지를 우리가 커스텀할 수 있도록 했다.

구현을 보면 간단하게 생겼다. Superstruct의 defined을 사용하여 custom validator를 만드는 과정이다. 첫번째 인자로 다른 validator들을 넣어, 해당 validator가 invalidate 상태일때 우리가 두번째 인자로 넘겨준 오류 메시지를 리턴하도록 한다.

이를 사용하여 다음과 같이 오류 메시지를 커스텀 할 수 있다.

728x90
반응형