原生執行 TypeScript
自 v22.18.0 起,Node.js 預設啟用“型別擦除”。如果您使用的是 v22.18.0 或更高版本,並且您的原始碼只包含可擦除的 TypeScript 語法,則無需閱讀本文。
使用 Node.js 執行 TypeScript 程式碼
自 V22.6.0 起,Node.js 透過“型別擦除”對某些 TypeScript 語法提供了實驗性支援。您可以直接在 Node.js 中編寫有效的 TypeScript 程式碼,而無需先進行轉譯。
--experimental-strip-types 標誌告訴 Node.js 在執行 TypeScript 程式碼之前擦除其中的型別註釋。
node --experimental-strip-types example.ts
就是這樣!現在您可以直接在 Node.js 中執行 TypeScript 程式碼,而無需先進行轉譯,並可以使用 TypeScript 來捕獲與型別相關的錯誤。
在 V22.7.0 中,此實驗性支援得到了擴充套件,透過新增 --experimental-transform-types 標誌,可以轉換 TypeScript 獨有的語法,例如 enum 和 namespace。啟用 --experimental-transform-types 會自動意味著 --experimental-strip-types 也被啟用,因此無需在同一命令中同時使用這兩個標誌。
node --experimental-transform-types another-example.ts
從 v22.18.0 起,型別擦除預設啟用(您可以透過 --no-experimental-strip-types 停用它),使您能夠執行任何支援的語法,因此支援使用 node file.ts 執行如下檔案:
function (: number): string {
return 'hello';
}
然而,執行任何需要轉換的程式碼,如下面的程式碼,仍然需要使用 --experimental-transform-types。
enum {
,
,
}
.(.);
限制
在撰寫本文時,Node.js 對 TypeScript 的實驗性支援存在一些限制。
您可以在 API 文件中獲取更多資訊。
配置
Node.js TypeScript 載入器 (Amaro) 不需要或使用 tsconfig.json 來執行 TypeScript 程式碼。
我們建議您透過建立一個 tsconfig.json 檔案,並使用此處列出的 compilerOptions,來配置您的編輯器和 tsc 以反映 Node.js 的行為,同時建議使用 TypeScript 5.7 或更高版本。
重要說明
感謝所有使這項功能成為可能的貢獻者。我們希望這項功能能夠儘快穩定並在 Node.js 的 LTS 版本中可用。
我們可以理解這項功能是實驗性的,並且存在一些限制;如果它不適合您的使用場景,請使用其他方案,或貢獻修復。我們也歡迎提交錯誤報告,請記住該專案由志願者運營,不提供任何形式的保證,因此如果您無法親自貢獻修復,請耐心等待。