iBetter Books
수정

Ch 01. TypeScript 7.0과 Project Corsa

2025년 TypeScript 팀이 발표한 소식은 커뮤니티를 뒤흔들었습니다. "TypeScript 컴파일러를 Go 언어로 다시 작성합니다." 단순한 성능 개선이 아니었습니다. TypeScript의 핵심을 바닥부터 다시 짓는 작업입니다.

이 프로젝트의 이름은 Project Corsa입니다. 그리고 그 결과물이 TypeScript 7.0으로 출시될 예정입니다.

왜 Go인가

TypeScript 컴파일러는 지금까지 TypeScript 자체로 작성되어 있습니다. 자기 자신으로 자신을 컴파일하는 구조입니다. 오랫동안 잘 작동해왔지만, 한계가 있습니다.

JavaScript/TypeScript는 단일 스레드로 동작합니다. 컴파일러도 마찬가지입니다. 대규모 프로젝트에서는 타입 검사에 수십 초가 걸립니다. 에디터 반응이 느려지고, CI 빌드가 길어지고, 개발 생산성이 떨어집니다.

Go는 다릅니다. 네이티브 멀티스레딩, 낮은 메모리 사용량, 빠른 시작 시간. Go로 재작성된 컴파일러는 기존 대비 10배 이상 빠른 성능을 목표로 합니다.

10배 빠른 빌드

Microsoft가 내부 테스트에서 공개한 수치가 있습니다.

프로젝트 기존 tsc Go 기반 tsc 개선율
TypeScript 컴파일러 자체 77.8s 7.5s 10.4x
VS Code 43.8s 4.0s 10.9x
Playwright 11.1s 1.1s 10.1x
date-fns 6.5s 0.6s 10.8x

10배는 정확한 수치입니다. 프로젝트 규모와 상관없이 일관되게 나타납니다.

에디터 경험도 달라집니다. "파일 저장 후 타입 에러 표시"가 즉각적으로 반응합니다. 지금은 복잡한 파일에서 타입 오류 피드백이 수 초 걸리는 경우가 있지만, Go 기반 언어 서버는 이 지연이 거의 없어집니다.

strict-by-default

TypeScript 7.0에서 예정된 또 다른 변화입니다. npx tsc --init으로 생성하는 기본 tsconfig.json에서 strict: true가 기본값이 됩니다.

지금까지는 strict: false가 기본이었습니다. 새 프로젝트를 시작할 때 의식적으로 strict: true를 켜야 했습니다. 7.0부터는 반대가 됩니다. 느슨한 설정을 원하면 명시적으로 꺼야 합니다.

이 변화가 의미하는 것이 있습니다. TypeScript 팀이 "strict 모드가 이제 선택이 아니라 기준"이라는 메시지를 보내는 것입니다.

이미 strict 모드로 작업하고 있다면 영향이 없습니다. 하지만 strict 없이 새 프로젝트를 시작하던 습관은 바뀌어야 합니다.

ES5 target 제거

TypeScript 7.0에서 "target": "ES5" 지원이 제거됩니다.

ES5는 Internet Explorer를 지원하기 위한 설정입니다. Microsoft가 Edge를 기본 브라우저로 전환하고, IE의 시장 점유율이 1% 미만으로 떨어진 지금, ES5 타겟 유지는 컴파일러 복잡도만 높입니다.

현대적인 타겟 기준은 다음과 같습니다.

// 권장 설정 (2025년 기준){  "compilerOptions": {    "target": "ES2020",   // 모든 주요 브라우저, Node.js 14+    "lib": ["ES2020", "DOM"]  }}

레거시 브라우저 지원이 필요하다면 Babel이나 SWC 같은 별도 트랜스파일러를 사용하는 것이 더 올바른 접근입니다.

마이그레이션 영향

TypeScript 7.0으로의 업그레이드는 기존 코드에 어떤 영향을 미칠까요.

타입 검사 결과는 동일합니다. Go 기반 컴파일러는 기존 TypeScript와 동일한 타입 시스템을 구현합니다. 지금 통과하는 코드는 7.0에서도 통과합니다.

tsconfig.json은 확인이 필요합니다. "target": "ES5"를 사용하고 있다면 변경해야 합니다. strict: false를 의도적으로 쓰고 있다면 명시적으로 유지해야 합니다.

빌드 스크립트는 그대로입니다. tsc 명령은 동일합니다. CLI 인터페이스는 변하지 않습니다.

패키지는 교체됩니다. 기존 typescript 패키지는 계속 배포됩니다. Go 기반 컴파일러는 별도 패키지(@typescript/native-preview)로 제공된 뒤 안정화 후 통합될 예정입니다.

지금 당장 해야 할 것

Project Corsa가 아직 개발 중이라면, 지금 당장 무언가를 바꿀 필요는 없습니다. 하지만 준비할 수 있는 것들이 있습니다.

□ ES5 target을 사용하고 있다면 ES2020 이상으로 전환 계획 세우기
□ strict: true를 아직 안 켰다면 켜기 (7.0이 기본값이 됩니다)
□ 공식 TypeScript 블로그 구독 (devblogs.microsoft.com/typescript)
□ TypeScript 릴리즈 노트 주기적으로 확인

TypeScript는 매년 두세 차례 마이너 버전을 출시합니다. 각 버전에 새로운 언어 기능이 추가됩니다. 버전을 따라가는 것이 TypeScript를 잘 쓰는 방법 중 하나입니다.

다음 챕터에서는 TypeScript를 더 깊게 배우기 위한 자료를 소개합니다.