目录

Microsoft于2026年10月20日发布了TypeScript 7.1 Beta,加快了类型检查、降低了内存占用,并提供了面向外部工具的预览API。开发团队现在即可验证编译器性能,工具开发者和框架维护者也可以评估新的集成方式。

主要要点#

  • Microsoft的测试显示,类型检查速度达到TypeScript 7.0的1.2~1.9倍,内存占用减少了15.8~49.6%。
  • 预览API允许JavaScript工具访问原生编译器的语法解析结果和类型信息,但现有集成需要修改。
  • 内容映射器为在编辑器和命令行中检查Vue的.vue文件等复合文件提供了通用集成机制。
  • DOM定义更新和更严格的条件类型检查可能导致现有项目出现新错误。

加快检查并降低内存占用#

TypeScript 7.1 Beta通过缩小内部数据结构、改进文件更改后解析结果的复用,优化了用Go编写的原生编译器。这缩短了类型检查的等待时间,也减少了所需内存。

Microsoft在5个代码库中比较了TypeScript 7.0和7.1 Beta。测试使用默认的4个类型检查线程和--noEmit,结果来自不生成输出文件的检查。

| 代码库 | 7.0耗时 | 7.1 Beta耗时 | 7.0内存 | 7.1 Beta内存 | |---|---:|---:|---:|---:| | mui-docs | 22.2秒 | 11.9秒 | 8,093 MiB | 4,079 MiB | | vscode | 21.6秒 | 17.7秒 | 8,387 MiB | 6,943 MiB |

据报告,在这5个项目中,速度提升至原来的1.2~1.9倍,内存占用减少了15.8~49.6%。这些数据由Microsoft测得。估算CI成本节省幅度时,请先在自己的仓库中验证。

面向工具开发者的新API#

预览API允许JavaScript工具访问原生编译器的语法解析结果和类型信息。入口分为用于同步操作的typescript/sync和用于异步操作的typescript/async,typescript/fs提供文件系统,typescript/ast提供语法树节点类型和枚举。

快照保存项目或程序在特定时刻的状态。工具可以传入已更改文件的信息,从之前的快照创建新快照,无需重新发送整个项目。如果同时保留之前的快照,还可以比较更新前后的诊断结果。

此API不同于TypeScript 6.0及更早版本提供的API。依赖旧接口的工具需要专门迁移,仅安装7.1 Beta无法让现有集成正常工作。工具开发者应先确认预览API是否提供集成所需的操作。

面向框架的内容映射器#

内容映射器允许插件将复合文件转换为TypeScript可以解析的代码。插件还会提供生成代码与源文件之间的映射关系,使TypeScript能够将错误和编辑器辅助功能关联到正确的源代码位置。

同一机制同时支持命令行检查和编辑器功能。这对Vue的.vue等将标记、脚本和样式放在同一文件中的格式很重要。据Microsoft介绍,面向Astro、CSS Modules、Ember、MDX、Svelte和Vue的原型或实现正在推进。

项目通过tsconfig.json顶层的contentMappers字段指定包及对应扩展名,以配置插件。配置前请确认包是否可用。Microsoft的Vue示例中使用的@vue/content-mapper在发布公告时尚未发布到npm。

模块与标准库更新#

类型声明现已支持导入属性。例如,声明带有type: "text"的导入返回字符串后,一份声明即可同时处理.txt和.md。运行时或打包工具也必须支持该属性,仅靠类型声明并不能实现文件加载。

TypeScript 7.1还支持源阶段导入语法,例如用于WebAssembly模块的import source。这样可以在代码中获取WebAssembly.Module,稍后再将其实例化。执行时仍需所用工具链和运行时提供支持。

为--target和--lib指定新增的es2026后,即可使用对应的标准库定义,包括Array.fromAsync()以及用于Base64和十六进制转换的Uint8Array方法。除了确认类型是否可用,还请检查运行时的支持情况。

引入前确认兼容性#

DOM定义更新可能改变浏览器代码的检查结果。此外,更严格的条件类型检查可能拒绝某些代码,这些代码假定对整个联合类型成立的约束,也对单独求值的每个成员成立。

请在测试分支中运行npm install -D typescript@beta,安装测试版。在相同条件下,将诊断结果、检查耗时和峰值内存占用与当前版本进行比较。Microsoft计划在公告发布约一个月后推出候选发布版,之后再发布稳定版,但这只是计划,并非确定的发布日期。

下一步#

在使用TypeScript 7.1 Beta的分支中,为仓库的类型检查命令添加--noEmit并运行,记录耗时和新增的诊断信息。

来源: https://gihyo.jp/article/2026/10/_typescript-7.1-beta

目录