TypeScript 4.8修复了Linux和macOS上的文件观察问题

698 阅读2分钟

TypeScript 4.8修复了Linux和macOS上的文件观察问题

微软的类型化JavaScript的更新还引入了对交叉和联合类型的工作方式以及TypeScript缩小类型的改进

TypeScript 4.8是微软流行的强类型JavaScript变体的计划升级,它将为该语言增加正确性和一致性的改进以及文件观察的修复。

6月21日作为测试版发布,TypeScript 4.8将于8月23日全面上市。随着测试版的发布,在strictNullChecks 下引入了一系列对一致性和正确性的改进。这些变化影响了交叉和联合类型的功能,并在TypeScript缩小类型的过程中得到了利用。在一个例子中,unknown 在精神上接近于联盟类型{} | null | undefined ,因为它接受nullundefined ,和任何其他类型。TypeScript现在认识到这一点,并允许从unknown{} | null | undefined 的赋值。微软说,TypeScript 4.8中的变化允许控制流和类型缩小方面的合理改进。通用值也得到了缩小。

至于文件观察的修复,TypeScript有一个长期存在的错误,在--watch 模式和编辑器的情况下,该语言对某些文件的改变有困难。通常,这些都发生在Unix系统上。这种情况是由关于Node.js如何处理跨文件系统重命名事件的假设引起的。Linux和MacOS使用的文件系统使用inodes,而Node.js会将文件观察器附加到inodes而不是文件路径。TypeScript试图使用相同的观察者对象,如果它检测到一个路径仍然存在于磁盘上,所以最终会重复使用观察者对象,而不是在原始位置安装一个新的观察者,并且会观察可能是不相关文件的变化。TypeScript 4.8正确处理了节点系统上的这些情况,并安装了一个新的观察器。

在TypeScript 4.8的其他地方:

  • 引入了优化,以加快围绕–-watch--incremental 的方案,以及使用--build 的项目引用。
  • 绑定模式的推理已经得到了改进。
  • 当在编辑器中运行find-all-references时,TypeScript现在在聚合引用方面更加智能。这使得搜索一个广泛使用的标识符所需的时间减少了约20%。
  • 在一个突破性的变化中,不受约束的泛型不再可以分配给{} 。在另一个突破性变化中,类型不能在JavaScript文件中被导入或导出。

TypeScript 4.8测试版可以通过NuGet下载,或者通过NPM使用以下命令下载:

npm install -D typescript@beta

TypeScript 4.8是继上个月发布的TypeScript 4.7之后的又一个版本。