기술

TypeScript 7.0, 컴파일 속도 10배 향상 — Vue, Svelte, Angular는 7.1까지 대기

Adrian Kessler

VS Code 내부의 TypeScript 컴파일러는 예전에 편집기 자체 코드베이스의 새로운 복사본을 확인하는 데 125초를 소비했습니다. TypeScript 7.0은 동일한 작업을 10.6초 만에 수행합니다. Microsoft는 기존 코드를 최적화하지 않았습니다. 대신 컴파일러 런타임 전체를 JavaScript에서 Go로 이식하여 JavaScript 엔진이 제공할 수 없는 멀티코어 병렬 처리를 활용할 수 있게 되었습니다.

이 이식은 완전히 새로운 재작성은 아닙니다. Microsoft 엔지니어들은 타입 검사 로직이 TypeScript 6.0과 구조적으로 동일하다고 설명했습니다. 동일한 규칙, 동일한 동작을 CPU 코어 간에 작업을 분산할 수 있는 언어로 번역한 것입니다. 팀이 Go를 선택한 이유는 원래 함수 중심의 JavaScript 코드베이스가 Go 관용구와 거의 일대일로 매핑되었기 때문입니다. 새로운 런타임은 또한 명시적인 병렬 처리 제어를 위한 플래그를 도입했습니다. 최신 워크스테이션에서 –checkers 8을 전달하면 VS Code 빌드에서 TypeScript 6.0 대비 16.7배의 성능 향상을 보입니다. Slack의 CI 타입 검사는 7.5분에서 1.25분으로 단축되었습니다. Bluesky의 빌드는 24.3초에서 2.8초로 줄었습니다. 이 패턴은 모든 코드베이스에서 일관됩니다. 프로젝트 규모가 커질수록 성능 향상은 더 커집니다. 이제 한계는 런타임이 아닌 하드웨어이기 때문입니다.

TypeScript 7.0은 공개 프로그래밍 API 없이 출시되었습니다. 빌드 도구가 자체 코드 내에서 컴파일러를 호출할 때 사용하는 인터페이스입니다. 모든 주요 웹 프레임워크의 템플릿 타입 검사기는 이에 의존합니다. Vue의 Volar 도구, Svelte의 언어 서비스, MDX, Angular의 템플릿 검사기: 이들 중 어느 것도 TypeScript 7.0에서 작동하지 않습니다. 리팩토링 및 테스트를 위해 TypeScript 컴파일러 내부를 노출하는 ts-morph 및 ts-jest와 같은 도구도 작동이 중단됩니다. Microsoft는 교체 API가 10월로 예정된 TypeScript 7.1에서 계획되어 있다고 확인했습니다. 이러한 프레임워크나 도구를 사용하는 프로젝트는 아직 업그레이드하지 말아야 합니다.

오래된 프로젝트 구성은 별도의 중단 문제에 직면합니다. TypeScript 7.0은 버전 6.0에서 더 이상 사용되지 않는 옵션을 하드 빌드 오류로 전환합니다. ES5 컴파일 대상, AMD 및 SystemJS 모듈 형식, 클래식 모듈 해석, import 문의 assert 키워드는 모두 빌드를 즉시 실패하게 만듭니다. 새로운 기본 tsconfig.json은 더 이상 @types 패키지를 자동으로 로드하지 않습니다. 즉, 타입 종속성을 명시적으로 선언하지 않고 암시적 타입 검색에 의존하던 프로젝트는 import 시점에 자동으로 실패합니다. Microsoft는 TS6 도구를 새 컴파일러와 함께 계속 실행해야 하는 프로젝트를 위해 typescript@npm:@typescript/typescript6 호환성 심을 제공합니다.

이러한 장애물을 넘은 프로젝트(일반 Node.js 또는 Deno 애플리케이션, 프레임워크 템플릿 시스템 없이 구축된 브라우저 앱, 프로그래밍 API 종속성이 없는 라이브러리)는 단일 package.json 변경만으로 업그레이드할 수 있습니다. 편집기 지원도 동일한 분할을 따릅니다. VS Code는 지금 사용 가능한 전용 TypeScript 7 확장 프로그램을 제공하며, 기본 제공 지원은 기존 TSServer 디자인을 대체하는 Language Server Protocol로의 마이그레이션을 완료하고 있습니다. TSServer에도 의존했던 WebStorm 및 기타 편집기는 여전히 해당 전환 작업을 진행 중입니다.

현재 2026년 10월을 목표로 하는 TypeScript 7.1은 Vue, Svelte, Angular 및 MDX 도구가 마이그레이션하기 전에 필요한 새 컴파일러 API를 제공할 예정입니다. 15개월간의 Go 이식 작업을 통한 성능 향상은 그때가 되어야 전체 생태계에 도달할 것입니다. 그때까지 Volar, SvelteKit 및 Angular의 프로젝트 페이지는 TypeScript 6.0.x를 유지할 것을 권장합니다.

태그: , , ,

토론

댓글 0개가 있습니다.