Go로 새로 만든 TypeScript 7.0이 나왔다. 풀빌드가 8~12배 빨라졌지만, TypeScript를 임베드하는 도구들은 아직 7.0을 지원하지 않는다.
TypeScript 타입체크가 크게 빨라졌다. 마이크로소프트가 컴파일러를 Go로 새로 써 7월 8일 7.0으로 내놨는데, 풀빌드가 보통 8~12배, VS Code에서 오류 파일을 여는 지연은 17.5초에서 1.3초 아래로 줄었다. 6월 18일 RC를 거쳤고, 그동안 따로 배포되던 네이티브 프리뷰가 정규 typescript npm 패키지에 들어왔다.
빨라진 건 두 가지 덕분이다. JavaScript 대신 네이티브 코드로 돌고, 여러 코어를 함께 쓴다. 코드가 많을수록 차이가 크고, 에디터 응답성(언어 서비스)도 같이 빨라진다. 메모리도 프로젝트에 따라 최대 26%까지 줄었다.
7.0은 네이티브로 새로 쓴 라인이다. 버전이 6(JavaScript 기반)과 7(네이티브) 두 갈래로 갈라졌고, 도구들이 7.0에 대응할 때까지 6.x가 함께 유지된다.
아직 안 되는 것
대신 걸리는 게 있다. 7.0에는 안정적인 programmatic API가 아직 없다. TypeScript를 자체 컴파일러나 언어 서비스에 임베드해 쓰는 도구들이 여기서 막힌다. 마이크로소프트는 Volar를 예로 들었고, typescript-eslint나 ts-morph처럼 TS API를 직접 부르는 도구도 여기 해당한다. 그래서 이들은 당분간 6.x에 남는다. 이 API는 이후 버전에 넣을 계획이다.
언제 써도 되나
지금 써도 되는지는 스택에 달렸다. 린터나 프레임워크 타입체크 없이 빌드와 CI만 돌리는 경우엔 바로 속도를 볼 수 있다. 그 도구들이 필수인 보통의 앱이라면, 도구들이 대응할 때까지 기다리는 편이 낫다. 속도 향상은 큰 프로젝트를 통째로 빌드할 때 가장 크고, 작은 프로젝트에선 차이가 그보다 작다.
References