← 전체 글로 돌아가기

TypeScript

TypeScript 타입 가드를 다룰 때 문제 해결 기준

타입 가드는 런타임 검사인데, 타입 정의와 실제 로직이 맞지 않으면 버그가 숨어든다.

TypeScript에서 타입 가드를 제대로 사용하지 않으면, 타입 체커는 통과하지만 런타임에서 에러가 난다. 이건 타입 안전성이라는 TypeScript의 원래 목적을 무시하는 것과 마찬가지다.

타입 가드를 다룰 때 중요한 건, 타입 정의와 실제 코드 로직이 일치하는지 확인하는 것이다. 로컬과 운영 환경 모두에서.

상황 요약: 뭐가 이상한가?

타입 가드 문제가 생기면 먼저 현재 상태를 정리하자:

  • 빌드 에러가 뜨는가, 안 뜨는가?
  • 실제 런타임에서는 뭐가 터지는가?
  • 정상일 때의 타입 상태는 뭐였는가?

이 정보들이 있으면 원인 추적이 훨씬 쉽다.

증거 모으기

타입 체크를 먼저 해보자:

npm run build
npx tsc --noEmit

빌드 에러가 뜨면 그게 첫 번째 단서다. 안 뜨면 런타임 동작을 더 자세히 봐야 한다.

optional과 null 처리

타입 가드의 대부분은 값이 존재하는지, 올바른 타입인지 확인하는 것이다. optional 타입을 정확하게 처리하지 않으면 나중에 null 참조 에러가 난다.

가장 작은 실험부터 시작하기

타입 가드를 수정할 때는 한 가지씩만 바꿔보자. 한 번에 여러 곳을 수정하면 뭐가 문제인지 알 수 없다.

타입 정의가 맞는지 확인

타입 정의 자체가 잘못되면, 아무리 타입 가드를 잘 써도 소용없다. 정의부터 검토하는 게 필요하다.

  1. 재현 조건을 명확히 한다.
  2. 같은 조건에서 다시 나는지 확인한다.
  3. 로그와 응답으로 설명할 수 있게 정리한다.

타입 가드는 TypeScript의 강력한 기능이지만, 정확하게 사용하지 않으면 오히려 버그를 숨길 수 있다. 늘 신중하게 접근하자.