해결된 질문
작성
·
156
0
안녕하세요, optional chaning을 사용하는 대신 dispatch가 null인 경우 에러를 발생시키도록 커스텀 훅을 작성하여 해결한다는 것으로 이해했는데, 이러면 사실 optional chaning을 사용하는 것보다도 더 위험한 코드가 되는것은 아닌지 질문드립니다.
실제 프로덕트에서라면 try catch로 감싸야 하는 것인지, 만약 그렇다면 구체적으로 어떤식으로 작성할 수 있을지 궁금합니다
답변 1
1
안녕하세요 이정환입니다.
우선 Context로 부터 불러온 dispatch가 null인 경우는 아래 2가지 중 하나일 것으로 예상됩니다.
Provider에게 데이터를 공급하지 않았을 때
Provider의 영역이 아닌 외부에서 데이터를 사용하려고 할 때
위 두 상황 모두 전반적인 App을 셧다운 시킬 수 있을 만큼 매우 위험한 상황입니다. 따라서 useTodoDispatch Hook에서도 throw로 예외를 던져 TodoDispatchContext에서 오류가 발생했다고 확실히 알려주는게 좋다고 생각합니다.
또는 Context의 타입을 nullable하지 않게 유지하기 위해 초기값을 만들어 두는것도 좋은 방법이 될 수 있을 것 같습니다. 그러나 이 방법은 문제가 생겼을때 디버깅을 힘들게 만들 가능성이 있습니다.
내키지 않으신다면 Zod 등의 런타임 타입체크 툴을 이용하시는것도 방법이 될 수 있을 것 같습니다.
감사합니다.