TypeScript 4.7 版本对 Node.js 中添加了 ESM 支持

2,169

在2022年4月8号微软发布的 TypeScript 4.7 RC 版本中提供了对 Node.js 16 的 ECMAScript 模块 (ESM) 支持以及新的编程语法,新的关键字,新的 Compiler Options,类型推导增强等功能。

RC版本于5月11号发布,而TypeScript 4.7 版本是微软的最新计划版本。Node.js 中对 ESM 的支持主要是在 Node.js 12 及更高版本中实现的, 在TypeScript 4.5前后, 已经对ESM进行了有限的支持,以从用户那里获得一些反馈,并让库作者为更广泛的支持做好准备。

但是,由于不再支持 Node.js 12,TypeScript 的构建者已经在 Node.js 16 上启动了稳定的目标,它应该提供更新的 ES 模块功能,例如 pattern trailers,同时还将 TypeScript 默认设置为支持顶级的更高目标

在 TypeScript 4.5 前后的版本中对 Node.js 中 ECMAScript 模块的支持有限。这些模块可以通过打包重用代码。但是实现这种支持很困难,因为 Node.js 构建在不同的模块系统 CommonJS 之上。moduleTypeScript 4.7 通过两个设置添加了此功能, node12并且nodenext. 寻求有关此功能的反馈,可以在GitHub 上提供。

TypeScript 4.7版本将于 5 月 24 日正式发布。目前可以通过 NuGet 或 NPM 访问 RC:

npm install typescript@rc

TypeScript 4.7 版本中的其他功能还包括:

  • 在 Node.js 中支持 ECMAScript Module
  • 模块检测(Module Detection) 控制
  • 计算属性(Computed Properties) 控制流 (Control-Flow) 分析
  • 改进在对象和方法中的函数推断 (Function Inference)
  • 实例化表达式(Instantiation Expressions)
  • 推断类型变量(infer Type Variables) 扩展约束(Constraints)
  • 类型参数(Type Parameters)的可选 Variance 注解
  • #private 私有字段上的 typeof
  • 通过 moduleSuffixes 自定义 Resolution
  • resolution-mode
  • Groups-Aware Organize Imports
  • Object Method Snippet Completions
  • Breaking Changes

在 Beta 版之后,TypeScript 的构建者发现已计划发布的字段typeof功能存在 API 兼容性问题。#private团队也开始怀疑是否typeof this.#somePrivate在声明 Emit 上编写得很好。因此,TypeScript 4.7 中忽略了此功能。