如何看待 2025 年 3 月 11 日微軟公開的 TypeScript-Go 專案?
更新于:2025-03-26 04:30:53

等了好多年的專案。。。之前項目里代碼很多,VSCode 經常因為 TypeScript 卡死。

這是什麼?用 Go 語言重寫的 TypeScript 編譯器,將成為後續的 TypeScript 7 版本。

怎麼實現的?基本就是將 TypeScript 專案里的代碼從 TypeScript 逐行轉成 Go 語言,函數名都一樣,下面是一個簡單函數的對比:

/ /typescript 版本 function getElementTypeOfArrayType(type: Type): Type | undefined { return isArrayType(type) ? getTypeArguments(type)[0] : undefined; } // go 版本 func (c *Checker) getElementTypeOfArrayType(t *Type) *Type { if c.isArrayType(t) { return c.getTypeArguments(t)[0] } return nil }

為什麼是用 Go 語言?如果既要性能又要方便遷移代碼,這是當前最好的選擇,因為有 GC 使得代碼里很容易實現迴圈引用,相比之下 Rust 寫起來就太麻煩了,必須依賴記憶體池等方案。

用什麼用處?可以提升現有 IDE 里的語法檢查及編譯 TypeScript 的速度,號稱提升 10 倍,利好大型 TypeScript 項目開發。

和現有工具比?現有的類似工具主要做編譯,比如 SWC 等都不做類型檢查,而 Typescript-Go 除了編譯還會做類型檢查,提供 LSP 服務等。

未來前景?主要用使用場景將局限在 IDE 中提供類型檢查和 LSP 服務,預計編譯速度不會超過 SWC,而且現在 Bun、Deno 及新版 Node 都直接支持運行 TypeScript 了,用起來方便得多。