타입스크립트와 리액트로 진행했던 프로젝트에 ESLint를 적용하는 게 생각보다 쉽지 않았다. 린트 규칙을 통과하지 못하니까 당연히 husky도 해결이 안되는 상황이다. husky를 설치하고 세팅하는 건 어렵지 않은데 결국 pre-commit이랑 pre-push를 설정하면 코드 포맷팅이랑 린트 규칙을 통과해야 깃허브에 push가 되니까, 결국 ESLint를 통과할 수 있도록 해결해야 한다. 대부분의 문제는 쉽게 해결했는데, 타입과 인터페이스가 정의되어 있지 않다는 오류를 해결하는 데 너무 오랜 시간을 보냈다. 결국 대충 동작하게끔만 해결해놓은 상태고, push하면 결국 또 다시 린트 오류가 발생한다. typescript parser 문제도 발생하는데, 다른 것도 해야 되는 상황이라 너무 오래 붙잡고 있기 그래서 내일로 미루려고 한다.
오늘은 린트 오류 해결하다가 시간을 다 보내서 타입 스크립트 적용은 간단하게만 진행했다. 전부다 해결한 건 아니지만 일단 로그인 페이지에 타입을 적용하는 것까지는 마무리했다. 로그인하고 회원가입이 UI가 같기 때문에 충분히 함수 추출하기로 리팩토링이 가능할 것 같다. 이 부분은 내일 진행해려고 한다.
리액트 라우터가 v6로 업그레이드 되고 나서 기존에 useHistory는 없어지고 useNavigate Hook이 등장했다. 기존에 useHistory의 go, goback, push, replace의 기능은 모두 가지고 있으면서 사용하는 방법이 정말 간략해졌다. 둘의 차이점이 하나 더 있다면 history는 객체지만 navigate는 함수라는 점이 다르다.
역시나 디버깅에 시간이 제일 많이 투자하게 된다. 어쩔 수 없는 것 같다. 그리고 내가 정확히 알고 있는 건지 모르겠지만 프론트 관련 라이브러리나 언어들은 지금도 급변하고 있는 부분들이 많기 때문에 상대적으로 새로운 부분에서 오류가 발생하면 해결하기가 쉽지 않은 것 같다. (자료가 많지 않다.) 아니면 호환성 문제 때문에 구글링 했을 때 이미 한참 지난 해결법이라면 현재 해결법으로 적합하지 않은 경우도 있는 것 같다.
나중에 지금보다 실력이 올라가게 되면 당연히 너무나도 쉽게 해결할 오류들이겠지만 현재 나에게는 약간 좀 버거운 느낌이 확실히 든다. 그래도 이 과정을 거쳐가야 확실한 성장이 있다.