TypeScript 5.7 업그레이드 후 빌드 시간 20% 개선
배경
회사 프로젝트가 TypeScript 5.3을 사용 중이었는데, 빌드 시간이 점점 느려지고 있었다. 특히 CI/CD 파이프라인에서 타입 체크에만 4분 이상 소요되는 상황이었다.
TypeScript 5.7이 11월 초 릴리즈되면서 성능 개선 사항이 많다는 글을 보고 업그레이드를 결정했다.
주요 변경 사항
1. 타입 체크 성능 향상
5.7에서는 조건부 타입 처리가 개선되었다. 우리 코드베이스에는 복잡한 유틸리티 타입이 많았는데, 이 부분에서 확실히 빨라졌다.
// 기존에 느렸던 패턴
type DeepPartial<T> = T extends object
? { [P in keyof T]?: DeepPartial<T[P]> }
: T;
type DeepReadonly<T> = T extends object
? { readonly [P in keyof T]: DeepReadonly<T[P]> }
: T;
2. 모노레포 환경 개선
프로젝트가 Turborepo를 사용하는 모노레포 구조인데, 패키지 간 의존성 해석이 빨라졌다. --incremental 플래그와 함께 사용하니 캐시 히트율도 올라갔다.
// tsconfig.json
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": ".tsbuildinfo"
}
}
3. 실제 측정 결과
- 로컬 빌드: 48초 → 38초 (약 21% 감소)
- CI 타입 체크: 4분 12초 → 3분 22초 (약 20% 감소)
- Watch 모드 재컴파일: 3.2초 → 2.1초
마이그레이션 이슈
큰 문제는 없었지만 몇 가지 타입 에러가 발생했다.
// 5.7에서 더 엄격해진 케이스
const config = {
port: process.env.PORT || 3000 // string | number 타입 에러
};
// 수정
const config = {
port: Number(process.env.PORT) || 3000
};
결론
빌드 시간 20% 개선은 체감상 꽤 컸다. 특히 로컬 개발 시 watch 모드가 빨라진 게 만족스럽다. 대규모 TypeScript 프로젝트라면 업그레이드 고려해볼 만하다.