TypeScript 5.3 来了,一大波新特性( 三 )


通过跳过 JSDoc 解析进行优化通过 tsc 运行 TypeScript 时 , 编译器现在将避免解析 JSDoc 。这不仅减少了解析时间,还减少了存储注释的内存使用量以及垃圾收集所花费的时间 。可以在 --watch 模式下看到稍快的编译速度和更快的反馈 。
通过比较非标准交集进行优化在 TypeScript 中,并集和交集始终遵循特定的形式,其中交集不能包含并集类型 。这意味着当我们在 A & (B | C) 这样的并集上创建交集时,该交集将被标准化为 (A & B) | (A & C) 。尽管如此,在某些情况下,类型系统仍会出于显示目的而保留原始形式 。
举个例子,假设我们有 SomeType & (Type1 | Type2 | ... | Type99999NINE),我们想要确定它是否可以赋值给 SomeType,源类型是一个看起来像 (SomeType & Type1) | (SomeType & Type2) | ... |(SomeType & Type99999NINE) 的联合类型 。在检查一个联合类型是否可以赋值给某个目标类型时,必须检查联合类型的每个成员是否可以赋值给目标类型 , 这可能会非常慢 。
在 TypeScript 5.3 中,当比较类型时 , 会快速检查目标类型是否存在于源交集中的任何成员中 。
整合 tsserverlibrary.js 和 typescript.jsTypeScript 本身提供了两个库文件:tsserverlibrary.js 和 typescript.js 。在 tsserverlibrary.js 中只有特定的 API(例如 ProjectService API) 。然而,这两个是不同包,它们有许多重叠之处,在包中重复了很多代码 。更重要的是 , 由于自动导入或肌肉记忆,要始终一致地使用其中一个可能会很具有挑战性 。意外加载两个模块太容易了,代码在不同的 API 实例上可能无法正常工作 。即使它能够正常工作,加载第二个包会增加资源使用率 。
鉴于此,TypeScript 团队决定整合两者 。typescript.js 现在包含 tsserverlibrary.js 的内容 , 并且 tsserverlibrary.js 现在只是重新导出 typescript.js 。整合之后,包大小减少了 20.5% 。




推荐阅读