
Node.js 团队最近发布了Amaro v1.0.0,向稳定支持 TypeScript 迈出了重要一步。Amaro是 Node 官方提供的类型剥离加载器,也是官方.ts 加载的重要基础。
长期以来,Node.js 一直缺乏对 TypeScript 的支持,开发者不得不依赖第三方工具链或使用像 Deno 这样的 JavaScript 运行时替代方案,后者原生支持 TypeScript。然后,从23.6版本(于今年 1 月发布)开始,开发者可以在 Node.js 中原生运行 TypeScript 了。Amaro 转变为稳定状态使 Node 向稳定的 TypeScript 支持又迈进了一步。
Amaro 是一个 @swc/wasm-typescript 封装器,后者是SWC TypeScript解析器的 WebAssembly 移植。在 Node.js 内部,SWC 被用于类型剥离。Amaro 的一个关键特性是能够作为全局加载器在 node_modules 中处理 TypeScript 文件,这是它比 Node.js 当前的实验性支持有显著优势的一个地方。它还支持两种模式:strip-types,这是默认的,只移除类型注解,以及 transform-types,用于更复杂的转换,如枚举。
在 Reddit 等平台上的讨论中,开发者普遍持积极但谨慎的态度。ismail5412 在评论潜在限制时说:
在一些项目中,我们移除了枚举,并在生产中使用了它。效果很好。[Reddit]
在 Reddit 上一项关于在生产中使用原生类型剥离的讨论中,一些开发者对生产准备情况表示了担忧:
对不起,那个功能的“稳定”版本在任何 Node LTS 中都提供了吗?如果不是,我们如何在“生产”中使用它?
尽管有这些保留意见,部分开发者已经成功地利用了这个功能:
它在 23.x 中就已经取消了标记,所以在 24 中自然也是。我在生产中使用了 22 版本,没有任何问题(前提是你正确配置了类型检查,带有 erasableSyntaxOnly 等)。
还有其他人指出,原生支持正在取代对外部工具的需求:
我在一个真正的生产应用程序中使用了它,尽管只是在本地开发环境以及生产 CI 管道中使用,没有任何问题……如果你能使用 Node 的原生类型剥离,那么肯定就不需要那些包了[tsx/ts-node]。
SWC 是一个基于 Rust 开发的、面向下一代快速开发工具的可扩展平台。像 Next.js、Parcel 和 Deno 这样的工具,以及 Vercel、ByteDance、腾讯、Shopify、Trip.com等公司都使用了 SWC。
Amaro 遵循 MIT 许可。欢迎大家遵循GitHub项目贡献指南和行为准则做出贡献。Amaro 1.0 支持 TypeScript 5.8。
声明:本文为 InfoQ 翻译,未经许可禁止转载。
原文链接:
https://www.infoq.com/news/2025/08/node-amaro-stable-ts-support/
评论