
Node 团队最近宣布,在 Node 23.6 中提供 TypeScript 原生支持。现在,Node 开发人员无需任何额外的配置或标识即可运行 TypeScript 文件。在 Node 22.6 中,该功能尚属于试验性质,现在已经稳定。TypeScript 原生支持是开发人员要求最多的 Node 功能之一。
现在,Node 开发人员可以创建一个 index.ts
文件,运行 node index.ts
,并且不需要额外的标识,Node 会移除文件中的 TypeScript 类型注解,并运行生成的 JavaScript 代码。
注意事项:Node.js 会忽略 tsconfig.json
文件,这是有意不再支持依赖于 tsconfig.json
设置的特性,如路径或将较新的 JavaScript 语法转换为较旧的标准(如装饰器,第三阶段建议)。同样, JSX 文件也不再支持。
Node 也不支持需要生成 JavaScript 代码的 TypeScript 语法。由于 Node 只需用空格替换内联类型(即类型剥离),所以开发人员无需源映射即可运行 TypeScript 代码。不过,某些具有运行时语义或需要生成 JavaScript 代码的 TypeScript 结构将不再支持。在支持范围内的 TypeScript 语法集称为可擦除语法。为支持这一工作流程,最新发布的 TypeScript(即 TypeScript 5.8)添加了一个 --erasableSyntaxOnly
标识。
Node.js 文档中列出了最重要的不再支持的语法:
以下是需要转换的最重要的特性:
Enum
声明包含运行时代码的
namespace
包含运行时代码的遗留
module
参数属性
导入别名
TypeScript 原生支持让 Node 更接近于其他原生 TypeScript 运行时,如 Deno 或 Bun。在一篇博文中,Deno 团队详细介绍了其他一些只有 Deno 才提供的特性,其中包括 tsconfig
支持和无需转译即可发布 TypeScript。
欢迎开发人员查看关于特性路线图的广泛讨论,其中包括团队做出相关权衡选择的原因以及开发人员的反馈。
声明:本文为 InfoQ 翻译,未经许可禁止转载。
原文链接:https://www.infoq.com/news/2025/03/node-23-runs-typescript-natively/
评论