TypeScript 4.7在Node.js中增加了ESM支持

126 阅读3分钟

TypeScript 4.7在Node.js中增加了ESM支持

现在,微软的强类型JavaScript的最新版本在候选版本中引入了对Node.js中ECMAScript模块的支持

TypeScript 4.7现在处于候选发布版本(RC)阶段,它为Node.js 16提供了ECMAScript模块(ESM)支持,并有大量的编码改进。

该RC于5月11日发布。TypeScript 4.7是微软的强类型JavaScript的最新计划版本。4月8日推出的TypeScript 4.7测试版支持Node.js 12中的ECMAScript模块,这是去年年底TypeScript 4.5的计划,但被推迟了。

然而,由于不再支持Node.js 12,TypeScript的构建者已经在Node.js 16开始了稳定的目标,这应该提供更新的ES模块功能,如模式拖车,同时也将TypeScript默认为更高的目标,支持顶级await

Node.js中对ECMAScript模块的夜间支持是在TypeScript 4.5的时间框架内推出的。这些模块通过打包实现了代码的重复使用。由于Node.js是建立在不同的模块系统CommonJS上的,所以实现这种支持一直很困难。module TypeScript 4.7通过两个node12nodenext ,增加了这一功能。我们正在寻求对这一功能的反馈,可以在GitHub上提供。

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

npm install typescript@rc

TypeScript 4.7的其他功能包括:

  • 为了控制模块检测,TypeScript 4.7引入了选项moduleDetection。
  • 支持一个moduleSuffixes 选项来定制模块指定器的查找。
  • 通过计算机属性的控制流分析,TypeScript分析了计算属性的类型并正确地缩小了它们。
  • TypeScript现在可以从带有对象和数组的函数中执行更精细的推断。这允许这些函数的类型以从左到右的方式持续流动,就像对普通参数一样。
  • 函数和构造函数可以直接输入类型参数。
  • 开发者可以明确地指定类型参数的差异性。
  • 组织导入是以群组感知的方式进行的。
  • 为对象字面方法提供了片段补全。
  • 一个readonly 元组现在将把它的length 属性视为readonly 。这是一个突破性的变化。
  • 转到源码定义有一个预览编辑命令。
  • 在另一个突破性的变化中,当在JSX中编写一个…spread ,TypeScript现在执行更严格的检查,确保给定的类型实际上是一个对象。因此,类型为unknownnever 的值,以及更少见的nullundefined 值**,** 不再能够传播到JSX元素中。

在测试版之后,TypeScript的构建者发现,原本计划发布的#private 字段上的typeof 功能,在API兼容性方面存在问题。该团队也开始怀疑typeof this.#somePrivate 是否能很好地在声明排放中进行合成。因此,这项功能被排除在TypeScript 4.7中。

前期的TypeScript 4.6ECMAScript 2022支持和递归检查等功能为中心,于2月28日发布。