JavaScript 运行时 Node.js 可以执行 TypeScript(Microsoft 的静态类型 JavaScript 派生语言)。但现在它可以做得更好,Node.js 指导委员会的 Marco Ippolito 解释道:2024 年 8 月,Node.js 引入了一项新的实验性功能 Type Stripping,旨在解决 Node.js 生态系统中长期存在的挑战:运行 TypeScript无需配置。在 Node.js v23.6.0 中默认启用,此功能正在变得稳定。 TypeScript 已经达到了令人难以置信的受欢迎程度,并且是所有最新 Node.js 调查中最受欢迎的功能。与 CoffeeScript 或 Flow 等从未获得过类似吸引力的其他替代方案不同,TypeScript 已成为现代开发的基石。虽然 Node.js 通过加载器支持它已经有一段时间了,但它们严重依赖配置和用户库。这种依赖导致不同加载器之间的不一致,使得它们难以互换使用。由于这些不一致和所需的额外设置,开发人员的体验受到了影响…目标是使开发更快、更简单,消除配置开销,同时保持开发人员期望的灵活性…TypeScript 不仅仅是一种语言,它还依赖工具链来实现其功能。用于此目的的主要工具是 tsc,TypeScript 编译器 CLI…类型检查与 tsc 的实现紧密耦合,因为没有关于语言的类型系统应如何运行的正式规范。缺乏规范意味着 tsc 的行为实际上是 TypeScript 类型系统的定义。 tsc 不遵循语义版本控制,因此即使是微小的更新也可能会引入类型检查的更改,从而可能破坏现有代码。另一方面,转译是一个更稳定的过程。它涉及通过删除类型、转换某些语法结构以及可选地“降低”JavaScript 以允许现代语法在较旧的 JavaScript 引擎上执行来将 TypeScript 代码转换为 JavaScript。与类型检查不同,转译不太可能在 tsc 版本之间发生破坏性的改变。当我们只考虑使 TypeScript 代码可执行所需的最小转译,并排除 JavaScript 引擎中尚未提供但在 TypeScript…Node.js 中可用的新 JavaScript 功能的降级(在启用之前)时,重大更改的可能性会进一步降低默认情况下,引入了 –experimental-strip-types。此模式允许通过简单地剥离内联类型来运行 TypeScript 文件,而无需执行类型检查或任何其他代码转换。这种最小的技术称为类型剥离。通过排除类型检查和传统的转译(TypeScript 更不稳定的方面),Node.js 降低了不稳定的风险,并且基本上避免了跟踪次要 TypeScript 更新的需要。此外,该解决方案不需要任何配置来执行代码… Node.js 通过用空格替换删除的语法来消除对源映射的需要,确保代码和结构的原始位置保持不变。它是透明的——运行的代码是作者编写的代码,减去类型…“随着这个实验性功能的发展,Node.js 团队将继续与 TypeScript 团队和社区合作,以改进其行为并减少摩擦.您可以查看路线图以了解实际的后续步骤……”
在 Slashdot 上阅读这个故事的更多内容。