原生运行 TypeScript
自 v23.6.0 起,Node.js 默认启用“类型剥离”。如果您使用的是 v23.6.0 或更高版本,并且您的源代码仅包含可擦除的 TypeScript 语法,则不需要本文。
使用 Node.js 运行 TypeScript 代码
自 V22.6.0 起,Node.js 通过“类型剥离”对某些 TypeScript 语法提供实验性支持。 您可以直接在 Node.js 中编写有效的 TypeScript 代码,而无需先对其进行转换。
--experimental-strip-types
标志告诉 Node.js 在运行 TypeScript 代码之前,从 TypeScript 代码中剥离类型注解。
node --experimental-strip-types example.ts
就是这样!现在您可以直接在 Node.js 中运行 TypeScript 代码,而无需先对其进行转换,并使用 TypeScript 来捕获与类型相关的错误。
在 V22.7.0 中,此实验性支持扩展到转换仅限 TypeScript 的语法,例如 enum
和 namespace
,并添加了 --experimental-transform-types
标志。 启用 --experimental-transform-types
自动意味着启用 --experimental-strip-types
,因此无需在同一命令中使用两个标志
node --experimental-transform-types another-example.ts
从 v23.6.0 开始,默认情况下启用类型剥离(您可以通过 --no-experimental-strip-types
禁用它),使您可以运行任何受支持的语法,因此支持使用 node file.ts
运行如下文件
function foo(bar: number): string {
return 'hello';
}
但是,运行任何需要转换的代码,如下面的代码仍然需要使用 --experimental-transform-types
enum MyEnum {
A,
B,
}
console.log(MyEnum.A);
未来版本的 Node.js 将包含对 TypeScript 的支持,而无需命令行标志。
局限性
在撰写本文时,Node.js 中对 TypeScript 的实验性支持存在一些局限性。
您可以从API文档中获取更多信息。
配置
Node.js TypeScript 加载器 (Amaro) 不需要或使用 tsconfig.json
来运行 TypeScript 代码。
我们建议配置您的编辑器和 tsc
,以通过使用此处列出的compilerOptions
创建tsconfig.json
来反映 Node.js 的行为,以及使用 TypeScript 版本5.7 或更高版本。
重要提示
感谢所有为实现此功能做出贡献的人。我们希望此功能能够稳定,并尽快在 Node.js 的 LTS 版本中提供。
我们理解此功能是实验性的,并且有一些限制; 如果这不适合您的用例,请使用其他功能,或贡献修复程序。 也欢迎提交错误报告,请记住该项目由志愿者运行,不提供任何形式的保证,因此如果您无法自己贡献修复程序,请耐心等待。