原生版 TypeScript 正式發(fā)布,十倍性能提升!

5 月 22 日,微軟發(fā)布了原生版 TypeScript 的預(yù)覽版。通過(guò)使用 Go 語(yǔ)言重寫(xiě),TypeScript 實(shí)現(xiàn)了高達(dá) 10 倍的性能提升,開(kāi)發(fā)者可以更快編譯,使用起來(lái)也更流暢。
為何要重構(gòu)?為何選 Go?
以前,TypeScript 編譯器是用 JavaScript 寫(xiě)的,運(yùn)行在 Node.js 上。這種做法有一些好處,比如容易配合其他工具。但也有明顯的問(wèn)題:
- 在大型項(xiàng)目中,性能遲緩、內(nèi)存占用高。
- 運(yùn)行效率受到 JavaScript 單線程模型的限制。
- 類型檢查、構(gòu)建和語(yǔ)言服務(wù)耦合緊密,難以模塊化優(yōu)化。
為了解決這些問(wèn)題,今年三月,TypeScript 團(tuán)隊(duì)就宣布正在使用 Go 語(yǔ)言重構(gòu) TypeScript,引起了前端圈的廣泛討論。
微軟在選新語(yǔ)言時(shí),考慮了很多,比如 C# 和 Rust。最后選了 Go,有幾個(gè)主要原因:
- Go 的寫(xiě)法和以前的 TypeScript 編譯器比較像,所以重寫(xiě)起來(lái)更順利。
- Go 有自動(dòng)內(nèi)存回收,開(kāi)發(fā)時(shí)更省心,也能減少內(nèi)存問(wèn)題。
- Go 支持并發(fā),能同時(shí)處理多個(gè)任務(wù),編譯更快。
- Go 編寫(xiě)的程序可以在很多平臺(tái)上運(yùn)行,TypeScript 的適用范圍更廣。
微軟的測(cè)試結(jié)果顯示,新版編譯器在一些有名的項(xiàng)目中速度提升非常明顯:
- VS Code:從 77.8 秒變成 7.5 秒,快了約 10 倍。
- Playwright:從 11.1 秒變成 1.1 秒,快了約 10 倍。
- TypeORM:從 17.5 秒變成 1.3 秒,快了約 13 倍。
一鍵體驗(yàn)原生 TypeScript
可以通過(guò)下面的命令來(lái)體驗(yàn)原生版 TypeScript:
npm install -D @typescript/native-preview然后,使用全新、臨時(shí)的命令行工具 tsgo(類似于 tsc)進(jìn)行類型檢查和編譯:
npx tsgo --project ./src/tsconfig.json這個(gè)工具以后會(huì)替代現(xiàn)在的 tsc,并成為官方 TypeScript 的一部分。
編輯器支持也來(lái)了
不僅僅是命令行工具,在編輯器層面,微軟也同步發(fā)布了原生 TypeScript 的 VS Code 擴(kuò)展插件:TypeScript (Native Preview),可以在 VS Code 的擴(kuò)展市場(chǎng)中搜索并安裝它:

安裝后,你可以在命令面板中啟用:
TypeScript Native Preview: Enable (Experimental)或在設(shè)置中打開(kāi):
{
// UI Setting:
"typescript.experimental.useTsgo": true
}注意事項(xiàng)
原生版 TypeScript 還沒(méi)有開(kāi)發(fā)完,目前已知的問(wèn)題包括:
- 功能缺失:
a.命令行功能:如 --build、--declaration 等還不支持。
b.編輯器功能:自動(dòng)導(dǎo)入、查找所有引用和重命名等功能也還沒(méi)有實(shí)現(xiàn)。
- 配置問(wèn)題:如果你用的是舊的模塊解析方式(比如
--moduleResolution node),可能要改成新的(比如bundler或nodenext)。
未來(lái)計(jì)劃
- 短期目標(biāo):繼續(xù)補(bǔ)全功能,比如
--build模式、項(xiàng)目引用、查找引用、重命名、函數(shù)簽名提示等。 - 長(zhǎng)期目標(biāo):這個(gè)預(yù)覽版最終會(huì)發(fā)展成 TypeScript 7,并且每天都會(huì)構(gòu)建,讓大家可以第一時(shí)間試新功能。
































