原生运行 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 版本中可用。

我们可以理解这项功能是实验性的,并且存在一些限制;如果它不适合您的使用场景,请使用其他方案,或贡献修复。我们也欢迎提交错误报告,请记住该项目由志愿者运营,不提供任何形式的保证,因此如果您无法亲自贡献修复,请耐心等待。