原生版 TypeScript 正式發布,十倍性能提升!
5 月 22 日,微軟發布了原生版 TypeScript 的預覽版。通過使用 Go 語言重寫,TypeScript 實現了高達 10 倍的性能提升,開發者可以更快編譯,使用起來也更流暢。
為何要重構?為何選 Go?
以前,TypeScript 編譯器是用 JavaScript 寫的,運行在 Node.js 上。這種做法有一些好處,比如容易配合其他工具。但也有明顯的問題:
- 在大型項目中,性能遲緩、內存占用高。
- 運行效率受到 JavaScript 單線程模型的限制。
- 類型檢查、構建和語言服務耦合緊密,難以模塊化優化。
為了解決這些問題,今年三月,TypeScript 團隊就宣布正在使用 Go 語言重構 TypeScript,引起了前端圈的廣泛討論。
微軟在選新語言時,考慮了很多,比如 C# 和 Rust。最后選了 Go,有幾個主要原因:
- Go 的寫法和以前的 TypeScript 編譯器比較像,所以重寫起來更順利。
- Go 有自動內存回收,開發時更省心,也能減少內存問題。
- Go 支持并發,能同時處理多個任務,編譯更快。
- Go 編寫的程序可以在很多平臺上運行,TypeScript 的適用范圍更廣。
微軟的測試結果顯示,新版編譯器在一些有名的項目中速度提升非常明顯:
- VS Code:從 77.8 秒變成 7.5 秒,快了約 10 倍。
- Playwright:從 11.1 秒變成 1.1 秒,快了約 10 倍。
- TypeORM:從 17.5 秒變成 1.3 秒,快了約 13 倍。
一鍵體驗原生 TypeScript
可以通過下面的命令來體驗原生版 TypeScript:
npm install -D @typescript/native-preview
然后,使用全新、臨時的命令行工具 tsgo
(類似于 tsc
)進行類型檢查和編譯:
npx tsgo --project ./src/tsconfig.json
這個工具以后會替代現在的 tsc
,并成為官方 TypeScript 的一部分。
編輯器支持也來了
不僅僅是命令行工具,在編輯器層面,微軟也同步發布了原生 TypeScript 的 VS Code 擴展插件:TypeScript (Native Preview),可以在 VS Code 的擴展市場中搜索并安裝它:
安裝后,你可以在命令面板中啟用:
TypeScript Native Preview: Enable (Experimental)
或在設置中打開:
{
// UI Setting:
"typescript.experimental.useTsgo": true
}
注意事項
原生版 TypeScript 還沒有開發完,目前已知的問題包括:
- 功能缺失:
a.命令行功能:如 --build
、--declaration
等還不支持。
b.編輯器功能:自動導入、查找所有引用和重命名等功能也還沒有實現。
- 配置問題:如果你用的是舊的模塊解析方式(比如
--moduleResolution node
),可能要改成新的(比如bundler
或nodenext
)。
未來計劃
- 短期目標:繼續補全功能,比如
--build
模式、項目引用、查找引用、重命名、函數簽名提示等。 - 長期目標:這個預覽版最終會發展成 TypeScript 7,并且每天都會構建,讓大家可以第一時間試新功能。