← 전체 글로 돌아가기

TypeScript

유니온 타입 때문에 배포가 깨질 때 보는 곳

TypeScript가 컴파일되지 않으면 배포 전 확인할 수 있다. 항상 타입 검사부터 하자.

TypeScript로 관리하는 프로젝트는 타입 에러가 하나라도 있으면 빌드가 실패한다. 유니온 타입은 특히 함수 매개변수에서 자주 문제가 된다.

배포 전 빌드 체크

# TypeScript 타입 검사만 (컴파일 없음)
npx tsc --noEmit

# 실제 빌드
npm run build

첫 번째 명령어로 빠르게 타입 에러를 찾을 수 있다. 빌드 속도가 오래 걸리면 이것만 먼저 돌려본다.

유니온 타입이 문제인 경우

// 잘못된 예
function process(data: string | number) {
  return data.toUpperCase() // string 메서드인데 number도 있을 수 있음
}

// 올바른 예
function process(data: string | number) {
  if (typeof data === 'string') {
    return data.toUpperCase()
  }
  return data.toString()
}

TypeScript는 두 타입 모두에서 사용 가능한 메서드만 호출하도록 강제한다. Optional/null 타입도 마찬가지다.

타입 가드 활용

// 1. typeof 체크
if (typeof data === 'string') { ... }

// 2. instanceof 체크
if (data instanceof Date) { ... }

// 3. 커스텀 type guard
function isUser(data: any): data is User {
  return data && typeof data.id === 'number'
}

배포 전에 이런 가드들이 제대로 작동하는지 테스트 케이스로 확인해야 한다.

문제 있을 때 검사 순서

  1. npx tsc --noEmit 실행해서 정확한 에러 메시지 읽기
  2. 에러 라인의 타입 정의 확인
  3. 함수가 받을 수 있는 타입이 뭔지 명시적으로 처리
  4. 빌드 재시도

타입 안정성은 배포 직전 마지막 방어선이다. 로컬 테스트는 통과했어도 타입 에러가 있으면 배포 안 된다.