Node.js 增加对 TypeScript 的实验性支持

原文信息: 查看原文查看原文

Node.js Adds Experimental Support for TypeScript

- Sarah Gooding

Node.js 增加了对 TypeScript 的实验性支持,这一举措凸显了 TypeScript 在现代开发中日益增长的重要性。

在今天早些时候合并的一个 PR 中,Node.js 增加了对 TypeScript 的实验性支持。最初的实现通过设置实验性标志 --experimental-strip-types 来执行 TypeScript 文件。

“Node.js 将把 TypeScript 源代码转译成 JavaScript 源代码,”Node.js TSC 代表 Marco Ippolito 在添加实验性支持的 PR 中 。“在转译过程中,不执行类型检查,类型将被丢弃。”

“我相信,让用户能够执行 TypeScript 文件对于推动生态系统的发展至关重要,这在所有调查中都有被请求,而且我们不能忽视。我们必须承认用户想要在不安装外部依赖或加载器的情况下运行 node foo.ts。”

如果您正在运行 Node 的 最新夜间版本,您现在就可以试用它,或者在 CodeSandbox 上尝试。Wes Bos 分享了一个快速的视频演示,展示了使用新标志运行 TypeScript:

Ippolito 还发布了一个 实验性 TypeScript 支持的路线图,概述了当前的限制:

  • 不支持需要转换的 TypeScript 特性(枚举、命名空间等)。
  • .ts 文件没有 .js 扩展名。
  • 不能在 node_modules 中运行 TypeScript。
  • 没有源映射,但不需要,因为我们执行了空白化(用空白替换被移除的代码)。

他还解释了为什么选择 @swc/wasm-typescript 进行实现:

因为 简单性。 我考虑过其他工具,但它们需要将 rust 或 go 添加到工具链中。 @swc/wasm-typescript 是一个小包,包含一个 wasm 文件和一个 js 文件来绑定它。 Swc 目前被 Deno 用于相同的目的,它经过了实战测试。 将来我看到这个将在 原生层 实现。

TypeScript 支持的下一步

路线图呼吁项目在其扩展支持的道路上进行几次演变。第二步要求将 TypeScript 转译器解耦,以便它可以像 npm 一样单独升级。之后,贡献者的目标是启用需要转换的 TypeScript 特性的支持,然后考虑 Node.js 是否应该在 node_modules 中运行 TypeScript 文件。

Ippolito 将第三步的重点放在优化 Node 和 SWC 之间的交互上,使其性能良好,不影响 Node 构建过程。

“这是我们测量性能并使其在生产中可用且没有性能损失的阶段,”他说。

第四步要求添加更多在核心中不使用但会减少用户痛苦的特性。

今天合并的 PR 是该特性的非常早期实现,但社区的反响非常积极,清楚地表明了需求。

许多人还评论了 Bun 和 Deno 在推动 Node 中 TypeScript 支持方面的竞争的重要性。它展示了对 TypeScript 在现代开发中重要性的日益增长的认识。即使在起步阶段,对 TypeScript 支持的承诺也表明 Node.js 的贡献者致力于保持相关性并响应开发者社区不断演变的需求。

分享于 2024-08-10

访问量 59

预览图片