TypeScript
환경변수 타입을 다룰 때 타입 단언이 늘어나는 이유
환경변수는 런타임에 결정되므로, 처음부터 타입을 정확하게 정의하지 않으면 나중에 타입 단언만 늘어난다.
환경변수 처리는 생각보다 복잡하다. 타입스크립트 세상에서는 변수가 항상 알려진 값이어야 하는데, 환경변수는 런타임에 결정되기 때문이다. 이 불일치를 해결하려고 개발자들이 가장 먼저 하는 게 타입 단언이다.
하지만 타입 단언만 늘어나면 타입 시스템의 의미가 없어진다. 처음부터 올바르게 접근하려면, 확인할 지점들을 명확히 해야 한다.
환경변수 검증이 첫 번째
타입 정의보다 먼저 할 일은 실제 환경변수가 뭐가 들어오는지 확인하는 것이다:
- 타입 가드 설정
- 정상일 때의 타입 상태
- 빌드 에러 메시지
이 정보들이 있어야 원인을 좁힐 수 있다.
빌드 단계에서 확인하기
개발하면서 계속 타입 체크를 해보자:
npm run build
npx tsc --noEmit
이 명령이 에러를 뱉으면 타입 단언으로 눈가림하지 말고, 실제 환경에서 뭐가 문제인지 확인해야 한다.
optional/null 체크의 중요성
환경변수는 없을 수도 있다. 따라서 항상 optional일 수 있다는 전제로 시작해야 한다.
로컬과 운영 환경 분리
로컬 개발 환경과 운영 환경의 환경변수가 다르면, 로컬에서는 잘 동작하는데 배포 후 문제가 생긴다. 이런 경우가 자주 있으므로 환경 차이를 명확히 적어두자.
한 가지씩만 변경하기
환경변수 관련 코드를 수정할 때는 한 번에 여러 변수를 건드리지 말자. 문제가 생겼을 때 원인을 찾기 어렵기 때문이다.
- 재현 조건을 명확히 한다.
- 같은 조건에서 다시 발생하는지 확인한다.
- 로그와 응답으로 뭐가 달라졌는지 설명한다.
환경변수 타입 처리는 한 번 제대로 해두면 앞으로 많은 버그를 방지할 수 있다.