TypeScript 7.0: TS를 10배 빠르게 만드는 Go 컴파일러

발행: (2026년 5월 26일 AM 08:23 GMT+9)
6 분 소요
원문: Dev.to

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 저장소에 등록하세요.

0 조회
Back to Blog

관련 글

더 보기 »

Go 오류 처리: 귀찮은가, 멋진가?

코딩을 완전히 처음 시작했을 때 몇 주 동안 나는 계속해서 “내가 도대체 뭘 하게 된 걸까?” 라고 생각했습니다. 무언가를 마주칠 때마다 나는 거의 이해하지 못했습니다.