TypeScript 7.0: TS를 10배 빠르게 만드는 Go 컴파일러
Source: Dev.to
대규모 TypeScript 코드베이스에서 작업해 본 사람이라면 그 고통을 잘 알고 있을 것입니다. 저장을 누를 때마다 수백 개 파일을 검사하는 타입‑체커가 실행되어 IDE가 느려지고, CI에서는 tsc --noEmit만 실행하는 데도 몇 분이 걸립니다. 언어는 언제나 표현력과 성능 사이의 균형을 맞춰 왔지만, 이제 그 균형이 다시 협상될 예정입니다.
Go 기반 컴파일러
TypeScript 7.0(현재 베타)에서는 컴파일러 전체를 Go로 다시 작성했습니다. 그 결과 빌드 시간이 대략 10배 빨라졌습니다—단순히 약간 개선된 것이 아닙니다.
왜 Go인가?
- 기존 컴파일러는 Node.js 위에서 동작하며 V8의 가비지 컬렉터와 단일 스레드 실행 모델을 물려받습니다. 작은 프로젝트에는 괜찮지만 규모가 커지면 병목이 됩니다.
- Go는 네이티브 바이너리로 컴파일되므로 Node.js 시작 오버헤드가 사라집니다.
- 고루틴을 이용하면 파일 간 병렬 처리가 간단해집니다.
- Go의 메모리 모델은 V8 힙보다 예측 가능성이 높습니다.
벤치마크
VS Code 코드베이스(~1.5 M 라인 TypeScript)를 기준으로:
| 컴파일러 | 시간 |
|---|---|
tsc (현재) | ~78 초 |
tsgo (TS 7 베타) | ~7.5 초 |
메모리 사용량은 약 57 % 감소하여 CI 파이프라인에서 실제 비용 및 개발자 시간 절감 효과를 가져옵니다.
시작하기
베타 버전은 @typescript/native-preview 패키지를 통해 배포됩니다.
# 로컬 개발 의존성
npm install -D @typescript/native-preview
# 혹은 전역 설치
npm install -g @typescript/native-preview
설치 후 tsgo 실행 파일이 tsc를 대체하는 형태로 제공됩니다.
# 프로젝트 타입‑체크
tsgo --noEmit
# 감시 모드
tsgo --watch
# 버전 확인
tsgo --version # → 7.0.0-beta
VS Code 통합
TypeScript Native Preview 확장을 설치하면 에디터 안에서 더 빠른 언어 서버를 사용할 수 있습니다. 타입 툴팁과 “정의로 이동”이 중간 규모 코드베이스에서도 즉시 반응합니다.
호환성 주의사항
-
테스트 커버리지 – Go 컴파일러는 TypeScript 테스트 스위트의 95 % 이상을 통과했습니다. 남은 차이는 레거시 emit 모드와 데코레이터 메타데이터와 관련된 부분이며, 최신 프로젝트에서는 거의 사용되지 않습니다.
-
Strict 모드 –
strict: true가 이제 기본값입니다.tsconfig.json에 strict 설정이 없으면 새로운 오류가 나타날 수 있습니다. 필요하다면 명시적으로 비활성화하세요:{ "compilerOptions": { "strict": false } } -
툴링 API – 컴파일러는 이제 Strada라는 코드명으로 내부 API 표면을 다르게 노출합니다. TypeScript 내부에 접근하는 서드파티 도구(특정 린터, 포매터, 커스텀 언어‑서비스 플러그인 등)는 업데이트가 필요할 수 있습니다.
tsc를 직접 사용하거나ts-jest,tsx와 같은 도구를 사용하는 대부분의 팀은 큰 문제 없이 전환할 수 있습니다.
앞으로의 전망
TypeScript 7은 새로운 타입 시스템 기능을 대대적으로 도입하는 것이 아니라, 기반을 강화하는 데 초점을 맞추고 있습니다. 더 빠른 타입‑체크는 에디터 피드백 루프를 개선하고 CI 파이프라인을 가속화하며, 성능 한계에 걸리지 않고 더 풍부한 검사를 수행할 여지를 제공합니다.
안정 버전은 2026년 6월 말 또는 7월 초에 출시될 예정입니다. 그 사이에 베타 버전은 브랜치나 그린필드 프로젝트에서 실험해도 안전합니다.
진행 상황은 TypeScript 블로그를 팔로우하고, 이슈는 typescript-go GitHub 저장소에 등록하세요.