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通过两个node12 和nodenext ,增加了这一功能。我们正在寻求对这一功能的反馈,可以在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现在执行更严格的检查,确保给定的类型实际上是一个对象。因此,类型为unknown和never的值,以及更少见的null和undefined的 值**,** 不再能够传播到JSX元素中。
在测试版之后,TypeScript的构建者发现,原本计划发布的#private 字段上的typeof 功能,在API兼容性方面存在问题。该团队也开始怀疑typeof this.#somePrivate 是否能很好地在声明排放中进行合成。因此,这项功能被排除在TypeScript 4.7中。
前期的TypeScript 4.6以ECMAScript 2022支持和递归检查等功能为中心,于2月28日发布。