TypeScript Native 프리뷰 공개
(devblogs.microsoft.com)- 타입스크립트 컴파일러를 Go 기반 네이티브로 포팅하는 프로젝트 Corsa의 ‘tsgo’ 프리뷰가 npm으로 공개됨
- 3월에 이슈가 되었던 10배 더 빠른 TypeScript 관련 후속 발표
- 기존
tsc
대비 10배 이상의 속도 향상을 달성했으며, JSX와 JSDoc 기반 JS 파일도 지원 - VS Code용 Native Preview 확장도 출시되었으나, 자동완성, 참조 찾기 등은 아직 개발 중
- 새로운 네이티브 API와 LSP 기반 언어 서버도 준비 중이며, Rust 기반 Node 모듈 libsyncrpc 도입
- 일부 기능은 아직 미구현이며, TypeScript 7(Corsa)와 기존 5.8(Strada) 간 명확한 차이 존재
TypeScript Native Preview 개요
- 2025년 3월 발표된 타입스크립트 네이티브 포팅 프로젝트(Corsa) 의 프리뷰가 공개됨
- 기존 JS 기반 코드베이스(Strada) 대비 Go로 작성된
tsgo
는 병렬성과 공유 메모리 활용으로 대규모 프로젝트에서 10배 이상의 성능 향상을 보임 -
tsgo
는 향후tsc
로 대체될 예정이지만 현재는 별도 npm 패키지로 제공됨npm install -D @typescript/native-preview npx tsgo --project ./src/tsconfig.json
VS Code 확장 기능
-
VS Code용 “TypeScript (Native Preview)” 확장 출시
-
설치 후 명령어 팔레트 또는 설정을 통해 활성화 필요
"typescript.experimental.useTsgo": true
-
현재는 기존 확장에 의존하며 기능은 제한적이나 지속적으로 개선 예정
릴리스 주기 및 개발 로드맵
- 해당 프리뷰는 향후 TypeScript 7 정식 버전으로 발전 예정
- 야간 빌드(Nightly) 로 배포되며, 자동 업데이트됨
- 일부 기능 미지원 상태:
-
--build
,--declaration
, 하위 타깃 emit - 에디터 기능: 자동완성, 참조찾기, 리네임 등
-
주요 업데이트 사항
타입 검사 완성도 향상
- 대부분의 타입 검사 기능 포팅 완료
- JSX와 JavaScript + JSDoc 타입 검사도 지원 시작
- 일부 intentional 변경사항 및
lib.d.ts
차이로 오류가 다를 수 있음
JSX 타입 검사 지원
- JSX는 초기엔 파싱만 가능했으나, 이제 완전한 타입 검사 지원
- 예시: Sentry 프로젝트 기준
tsc
는 72초,tsgo
는 6.7초로 10배 이상 속도 향상tsgo -p . --noEmit --extendedDiagnostics
JavaScript 파일 타입 검사
- JSDoc 기반으로 JS 파일을 분석하는 기능도 네이티브 코드에서 재구현됨
- 과거 방식보다 현대적이고 일관된 방식으로 리팩토링됨
- 일부 구형 패턴은 더 이상 인식되지 않을 수 있음
에디터 기능 (LSP 기반)
- 기존 TSServer 대신 LSP 기반 언어 서버로 재작성 중
- 초기 버전에서는 오류 표시, 정의로 이동, hover 기능 제공
- 최근에는 자동완성(completion) 기능도 추가됨
API 개발 현황
- IPC 기반 API 레이어 구현 중
- 다양한 언어에서 TypeScript 프로세스와 통신 가능
- Node.js에서 동기 통신을 위해 Rust 기반 모듈 libsyncrpc 도입
- 아직 API 디자인 초기 단계, 피드백 수용 중
기존 TypeScript와의 차이점
-
일부 설정 차이로 기존 프로젝트에서 오류 발생 가능:
- 예:
--moduleResolution: node
→bundler
또는nodenext
권장{ "compilerOptions": { "module": "preserve", "moduleResolution": "bundler" } }
- 예:
-
기타 차이:
- JSX emit은 보존만 가능
- declaration emit 미지원
-
--build
미지원 - 프로젝트 참조 관련 언어 서비스 미완성
앞으로의 계획
- 올해 말까지
--build
및 에디터 핵심 기능 대부분 구현 목표 - 개발 진행 상황은 블로그 및 nightly 릴리스를 통해 지속 업데이트 예정