TypeScript 4.6新增控制流分析、ES2022支持

247 阅读3分钟

微软的强类型JavaScript的最新版本还允许在super()之前的构造函数中的代码,改进递归深度检查,以及更多。

TypeScript 4.6是微软的强类型JavaScript超集的新迭代版本,现在可以作为生产版本使用,其功能包括从控制流分析到改进的递归深度检查。

2月28日发布的生产版本是在2月11日发布的候选版本和1月21日提供的测试版本之后发布的。

通过控制流分析,TypeScript现在可以根据判别方来缩小类型。当将单个属性解构为const ,或者将参数解构为从未被分配的变量时,TypeScript将检查解构的类型是否是一个歧视性联盟。如果是这样,TypeScript可以根据对其他变量的检查来缩小变量的类型。

在TypeScript 4.6中还有一个新功能,TypeScript的--target 选项现在支持ES2022,这意味着像类域这样的功能现在有一个稳定的输出目标,它们可以被保留下来。此外,新的内置功能,如数组上的at() 方法,可以用这个新的--target 设置或用--lib es2022

在之前引用的功能中,有一项改进放宽了编码限制,允许在构造函数中的代码在super() 。在JavaScript类中,在引用this 之前必须调用super() 。TypeScript也执行了这一点,但根据TypeScript 4.6的公告,有点太严格。如果一个构造函数中包含有属性初始化器,那么在构造函数的开头包含任何代码都是一个错误。这使得检查 super() 是否在引用this 之前被调用变得很 "便宜",但导致有效代码被拒绝。TypeScript 4.6放宽了这种检查。它还允许其他代码在super() 之前运行,同时确保super() 在引用this 之前出现在最高层。

TypeScript 4.6可以通过NuGet或NPM访问。

npm install typescript

TypeScript 4.6的其他新功能和改进:

  • 通过对依赖参数的控制流分析,TypeScript可以缩小依赖其他参数的范围,在某些情况下,TypeScript从休息参数中的签名推断。
  • 改进的递归深度检查为递归类型提供更好的关系检查。
  • TypeScript 现在可以推断出立即索引到映射的对象类型的索引访问类型。
  • JavaScript文件中的语法和绑定错误集已被扩展。如果开发者在编辑器(如Visual Studio或Visual Studio Code)中打开JavaScript文件,或者通过TypeScript编译器运行JavaScript代码,这些都会被看到。
  • 一个跟踪分析工具已经发布,以帮助遇到构建性能问题的团队。
  • 对象休息表达式现在会放弃那些看起来是不可传播的或通用对象的成员。这是一个突破性的变化。

前期的TypeScript 4.5版本已于去年11月发布,其中有Promise改进。