原生執行 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 獨有的語法,例如 enumnamespace。啟用 --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 版本中可用。

我們可以理解這項功能是實驗性的,並且存在一些限制;如果它不適合您的使用場景,請使用其他方案,或貢獻修復。我們也歡迎提交錯誤報告,請記住該專案由志願者運營,不提供任何形式的保證,因此如果您無法親自貢獻修復,請耐心等待。