TypeScript 4.6 업그레이드 후 빌드 속도 개선 사항

배경

지난주 TypeScript 4.6이 릴리즈되면서 주요 성능 개선이 있다는 소식을 접했다. 현재 프로젝트는 4.5.4를 사용 중이었고, 빌드 시간이 2분 가량 소요되어 개선이 필요한 상황이었다.

주요 변경사항

Control Flow Analysis 개선

함수 내 타입 추론 로직이 최적화되어 복잡한 조건문에서 성능이 향상됐다. 특히 union 타입을 많이 사용하는 코드에서 체감이 컸다.

type Status = 'pending' | 'success' | 'error';

function handleStatus(status: Status) {
  if (status === 'pending') {
    // 4.6에서 타입 narrowing 속도 개선
    return 'Loading...';
  }
  // 이전 버전보다 빠른 분석
  return status === 'success' ? 'Done' : 'Failed';
}

--incremental 모드 최적화

증분 빌드 시 .tsbuildinfo 파일 처리 로직이 개선됐다. 실제 측정 결과:

  • 전체 빌드: 2분 10초 → 1분 32초
  • 증분 빌드: 18초 → 12초

마이그레이션 과정

  1. package.json 업데이트
  2. 로컬에서 tsc --build 실행하여 에러 확인
  3. CI/CD 파이프라인에서 테스트
  4. 문제없어 main 브랜치에 머지

특별한 breaking change는 없었고, 기존 코드 수정 없이 적용 완료했다.

추가 개선 사항

tsconfig.json에 skipLibCheck: true를 추가하여 node_modules 타입 체크를 건너뛰도록 설정했다. 이것만으로도 10초 가량 추가 단축됐다.

{
  "compilerOptions": {
    "incremental": true,
    "skipLibCheck": true,
    "strict": true
  }
}

결론

버전 업그레이드만으로 체감할 수 있는 성능 향상을 얻었다. TypeScript 팀이 성능 개선에 꾸준히 투자하는 것이 느껴진다. 다음 4.7 버전에서는 ECMAScript Module 지원이 개선된다고 하니 기대된다.

TypeScript 4.6 업그레이드 후 빌드 속도 개선 사항