Skip to content

Go로 다시 태어난 TypeScript

TypeScript의 컴파일러가 Go로 완전히 재작성되어 놀라운 10배의 성능 향상을 제공합니다. 이러한 아키텍처 변화는 타입 검사 속도와 전체 개발자 경험을 재정의합니다.

Theo Brandt
Hero image for: Go로 다시 태어난 TypeScript

요약 / 핵심 포인트

TypeScript의 컴파일러가 Go로 완전히 재작성되어 놀라운 10배의 성능 향상을 제공합니다. 이러한 아키텍처 변화는 타입 검사 속도와 전체 개발자 경험을 재정의합니다.

TypeScript가 스스로를 포기한 이유

TypeScript는 냉혹한 비즈니스 현실 때문에 JavaScript의 뿌리를 버렸습니다. JavaScript는 현대 타입 검사를 정의하는 무거운 CPU-bound work를 위해 설계되지 않았습니다. 이러한 근본적인 불일치는 깨지지 않는 성능 한계를 부과하여 대규모 프로젝트에서 개발자 생산성과 빌드 시간에 직접적인 영향을 미쳤습니다. 이러한 내재된 한계를 인식한 팀은 더 높은 성능의 기반을 찾았습니다.

개발자들은 완전히 새로운 재작성을 시작하지 않았습니다. 대신, 기존 TypeScript 로직을 Go로 한 줄씩 마이그레이션하는 세심한 "포팅이지 재작성이 아님" 전략을 실행했습니다. 이 정밀한 접근 방식은 이전 버전인 TypeScript 6.0과 동일한 타입 검사 의미론 및 동작을 보장하여 예기치 않은 회귀를 방지하는 절대적인 충실도를 보장했습니다. 결과는 부인할 수 없습니다. 1400개 파일과 500,000줄의 코드를 포함하는 방대한 Playwright 리포지토리의 타입 검사 시간이 TypeScript 7.0 RC에서 6초에서 0.87초로 급감했습니다.

Go는 이 특정 컴파일러 아키텍처와 기존 TypeScript 코드베이스에 더 적합하여 Rust와 같은 대안보다 확실한 승자로 부상했습니다. Go의 강력한 동시성 모델과 효율적인 메모리 레이아웃은 기존 로직을 훨씬 빠르게 포팅할 수 있게 했습니다. 이 중요한 기능은 shared memory parallelism을 가능하게 하여, 이전에 단일 스레드였던 JavaScript 컴파일러를 여러 CPU 코어에 타입 검사를 분산할 수 있는 멀티 코어 강자로 변모시켰습니다.

분에서 밀리초로: 새로운 속도

TypeScript 7은 이전 벤치마크를 압도하는 순수한 속도를 제공합니다. 1400개 파일로 구성된 견고한 코드베이스인 Playwright 리포지토리는 이제 0.87초 만에 타입 검사를 완료합니다. 이는 이전 컴파일러의 약 6초에서 엄청나게 감소한 것으로, 개발자 기대를 근본적으로 재정의하는 거의 7배의 개선입니다.

이것은 단순히 더 빠른 JavaScript가 아닙니다. 근본적인 아키텍처 변화입니다. Go의 네이티브 코드와 shared memory parallelism은 TypeScript가 마침내 단일 스레드 제약을 벗어나 여러 CPU 코어를 동시에 활용할 수 있게 합니다. 이 기능은 CPU-bound 작업이 성능 병목 현상을 일으키는 JavaScript의 내재된 한계 내에서는 단순히 불가능했습니다. 강제 단일 스레드 모드에서도 Go 재작성은 Playwright 벤치마크를 약 2초 만에 완료합니다. 이는 여전히 이전보다 3배 빠릅니다.

개발자들은 이제 이 새로 발견된 힘을 세밀하게 제어할 수 있습니다. 새로운 `--checkers` 플래그는 병렬 타입 검사 작업자 수를 지정하며, 기본값은 4개이지만 고성능 코어 머신을 위해 구성할 수 있습니다. 이 값을 늘리면 CPU 리소스가 풍부한 시스템에서 빌드를 극적으로 가속화할 수 있지만, 더 높은 메모리 사용량이라는 대가가 따릅니다.

복잡한 빌드를 더욱 최적화하기 위해 `--builders` 플래그는 병렬 프로젝트 참조 빌드를 관리하며, 이는 효율적인 monorepo 컴파일에 필수적입니다. `--checkers`와 `--builders`를 결합하면 전례 없는 동시성을 허용하여 엔지니어가 성능을 조정하고 빌드 파이프라인에서 모든 밀리초를 추출할 수 있도록 지원합니다.

업그레이드: 순항인가 폭풍우인가?

원활한 업그레이드는 드물지만, TypeScript 7은 이를 제공합니다. Go 재작성은 동일한 타입 검사 로직을 세심하게 보존하여 버전 6에서 마찰 없는 전환을 보장합니다. TypeScript 5 또는 이전 버전을 사용하는 개발자는 호환성 문제가 발생할 수 있습니다. 권장 경로는 먼저 TypeScript 6으로 업그레이드하여 모든 문제를 해결한 다음 7로 진행하는 것입니다.

이 전제 조건은 TypeScript 6의 최신 기본값을 채택하도록 보장하며, 이는 버전 7에서 권장 사항에서 필수 요구 사항으로 전환됩니다. 다음을 준비하십시오: - `strict: true`가 변경 불가능한 기본값이 됩니다. - `module: esnext`가 새로운 표준이 됩니다. - `es5` 대상의 최종적인 제거. - 레거시 모듈 시스템(AMD, UMD, SystemJS)의 사용 중단. 이는 TypeScript가 과거를 벗어던지는 것입니다.

도구 개발자 여러분, 일정을 확인하세요. 핵심 컴파일러는 이제 Go 기반이지만, 안정적인 programmatic API는 TypeScript 7.1에 예정되어 있습니다. 그때까지 전용 호환성 패키지를 통해 TypeScript 6과 7을 동시에 실행할 수 있어, 컴파일러 내부를 깊이 파고드는 도구들의 충돌을 방지합니다. 전체 기술 분석은 Announcing TypeScript 7.0 RC - TypeScript를 참조하십시오.

개발 워크플로우가 한 단계 업그레이드되었습니다

Go로의 재작성은 단순히 더 빠른 CLI 명령에 관한 것이 아닙니다. 이는 여러분의 일상적인 코딩 경험을 근본적으로 변화시킵니다. 개발자들은 IDE, 특히 VS Code에서 즉시 차이를 느낄 것입니다. 편집기 프로젝트 로드 시간이 약 8배 급감하여, 대규모 코드베이스를 즉시 더 쉽게 관리할 수 있게 되었습니다.

Enjoying this? Get one like it in your inbox each morning.

one email a day · unsubscribe in two clicks · no third-party tracking

IntelliSense는 이제 전례 없는 속도로 완성 및 타입 피드백을 제공하여, 이전에 흐름을 방해했던 답답한 미세 지연을 없앱니다. 이는 기다림은 줄이고 코딩은 늘리며, 개발자 생산성에 직접적인 영향을 미치는 훨씬 더 부드러운 워크플로우를 의미합니다.

다음으로, `--watch` 모드는 완전히 새롭게 재설계되었습니다. 이전 버전은 Go의 네이티브 파일 감시 API 부족으로 인해 안정성과 크로스 플랫폼 일관성에서 어려움을 겪었습니다. 팀은 C++에서 강력하고 성능 좋은 파일 감시기를 포팅하여 해결책을 마련했습니다. 이는 Parcel bundler를 구동하는 바로 그 기술입니다.

이 정교한 새 감시기는 운영 체제 전반에 걸쳐 견고한 안정성을 보장합니다. 개발자들은 이제 파일 변경 사항에 대한 거의 즉각적인 피드백을 받아 반복적인 개발 주기를 진정으로 유연하고 반응적으로 만들 수 있으며, 이는 모든 최신 개발 환경에 필수적인 구성 요소입니다.

Go로의 재작성은 단순한 성능 향상 이상입니다. 이는 새로운 고성능 기반을 마련하는 전략적 투자입니다. 컴파일러의 새로운 속도와 효율성으로 TypeScript는 이제 차세대 도구를 가능하게 할 준비가 되었습니다. 즉각적인 타입 피드백과 훨씬 더 빠른 AI 기반 코드 지원과 같은 발전을 기대하십시오.

TypeScript 개발의 미래가 한 단계 발전하여, JavaScript에 묶여 있던 이전 버전으로는 불가능했던 반응적이고 지능적인 코딩 환경을 약속합니다. 분명한 것은, 더 빠른 컴파일러는 더 야심찬 기능과 더 설득력 있는 개발자 경험을 의미한다는 것입니다.

자주 묻는 질문

TypeScript 컴파일러는 왜 Go로 재작성되었나요?

TypeScript 팀은 타입 검사와 같은 CPU 집약적인 작업에서 JavaScript의 성능 한계를 극복하기 위해 컴파일러를 Go로 재작성했습니다. Go의 네이티브 성능과 동시성 모델은 엄청난 속도 향상과 공유 메모리 병렬 처리를 가능하게 했습니다.

TypeScript 7은 얼마나 더 빨라졌나요?

TypeScript 7은 이전 버전보다 약 10배 더 빠릅니다. Playwright와 같은 대규모 코드베이스 벤치마크에서 타입 검사 시간이 약 6초에서 0.9초 미만으로 단축되었습니다.

TypeScript 7에 주요 호환성 변경 사항이 있나요?

TypeScript 6에서 업그레이드하는 경우, 재작성이 로직의 직접적인 포팅이었기 때문에 사실상 호환성 변경 사항은 없습니다. 그러나 v6에서 도입된 기본값(예: 'strict: true')은 이제 필수 요구 사항이며, v5에서 업그레이드하는 경우 해당 변경 사항을 먼저 해결해야 합니다.

TypeScript 7은 어떻게 성능을 향상시키나요?

주요 성능 향상은 컴파일된 언어(Go)로의 전환에서 비롯됩니다. 또한, 새로운 컴파일러는 공유 메모리 병렬 처리 기능을 활용하여 여러 CPU 코어를 사용하여 동시에 타입을 확인할 수 있도록 하며, 이는 단일 스레드 JavaScript 버전에는 없던 기능입니다.

Found this useful? Share it.

One short daily email of tools worth shipping. No drip funnel.

one email a day · unsubscribe in two clicks · no third-party tracking

🚀더 알아보기

AI 트렌드를 앞서가세요

Stork.AIが엄선한 최고의 AI 도구, 에이전트, MCP 서버를 만나보세요.

P.S. 쓸 만한 걸 만드셨나요? Stork에 등록