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초
마이그레이션 과정
- package.json 업데이트
- 로컬에서
tsc --build실행하여 에러 확인 - CI/CD 파이프라인에서 테스트
- 문제없어 main 브랜치에 머지
특별한 breaking change는 없었고, 기존 코드 수정 없이 적용 완료했다.
추가 개선 사항
tsconfig.json에 skipLibCheck: true를 추가하여 node_modules 타입 체크를 건너뛰도록 설정했다. 이것만으로도 10초 가량 추가 단축됐다.
{
"compilerOptions": {
"incremental": true,
"skipLibCheck": true,
"strict": true
}
}
결론
버전 업그레이드만으로 체감할 수 있는 성능 향상을 얻었다. TypeScript 팀이 성능 개선에 꾸준히 투자하는 것이 느껴진다. 다음 4.7 버전에서는 ECMAScript Module 지원이 개선된다고 하니 기대된다.