TypeScript / 版本发布

TypeScript 7.0 正式发布:原生重写,速度提升10倍

约 3 小时前发布

TypeScript 团队宣布推出 TypeScript 7.0。这是该项目的一个重要里程碑,核心是将整个编译器工具链使用 Go 语言进行了原生重写,带来了10倍左右的编译和编辑体验速度提升。

核心亮点:速度的巨大飞跃

  • 编译速度:在多个大型开源项目(如 VS Code、Sentry)上测试,完整构建速度提升在 7.7倍 到 11.9倍 之间。
  • 内存效率:在相同项目上,总内存占用减少了 6% 到 26%
  • 编辑器响应:以 VS Code 代码库为例,打开一个包含错误的文件到显示首个错误的时间,从 17.5秒 缩短至 1.3秒(提升超过13倍)。
代码库 TS 6 编译时间 TS 7 编译时间 速度提升
vscode 125.7秒 10.6秒 11.9倍
sentry 139.8秒 15.7秒 8.9倍
bluesky 24.3秒 2.8秒 8.7倍

如何安装与使用

TypeScript 7.0 已通过 npm 发布,你可以使用以下命令安装:

npm install -D typescript

编辑器支持

  • VS Code:可以通过专用扩展 TypeScript 7 Native Preview 立即体验,未来几周将内置在 VS Code 中。
  • Visual Studio:最新版本会根据工作区自动启用。
  • 其他支持 LSP(语言服务器协议)的现代编辑器也应能良好工作。

并行化与自定义控制

为了充分利用现代硬件,TS 7.0 在解析、类型检查、代码生成等步骤中实现了并行处理。为了适应不同环境,它引入了新的配置标志:

  • --checkers:控制并行类型检查器的数量(默认为4)。在更大规模项目或更多CPU核心的机器上,可尝试调高此值(如8)以获得更高速度(VS Code项目可达16.7倍提速)。
  • --builders:在 --build 模式下,控制并行构建的项目引用数量。
  • --singleThreaded:强制使用单线程模式,用于调试或资源受限环境。

与 TypeScript 6.0 的兼容与过渡

  • 兼容性:TS 7.0 旨在与 TS 6.0 的类型检查和命令行行为高度兼容,绝大多数在 6.0 下能正常编译的代码无需修改即可在 7.0 下工作。
  • 并排运行:对于仍依赖 6.0 API 的工具(如 typescript-eslint),官方发布了兼容包 @typescript/typescript6,可以实现 6.0 与 7.0 并排运行,避免冲突。
  • 新默认行为:TS 7.0 采用了 6.0 引入的新默认值,如 strict: true(严格模式默认开启)、module: esnext 等。一些在 6.0 中标记为废弃的选项(如 target: es5)现在会直接报错。

其他重要改进

  • --watch 模式重写:基于 Parcel 的文件监视器,提供了更高效、稳定的跨平台文件变更检测,资源消耗显著降低。
  • 模板字面量类型改进:现在能更自然地处理 Unicode 码点(如 Emoji 字符),避免产生无效的代理对字符串,行为更符合开发者直觉(类似 for...of 遍历)。
  • JavaScript 支持优化:重写了 JS 文件的分析逻辑,使其与 TS 文件的类型分析更加一致,移除了对 JSDoc 中一些非标准或特殊模式的兼容。

已知限制与未来计划

  • API 暂未提供:TS 7.0 目前不包含可编程 API。这意味着依赖此 API 的工具(如 Vue、Astro、Svelte、Angular 的 Volar 等语言服务插件)暂时无法使用 TS 7.0。这些项目仍需继续使用 TS 6.0。
  • API 将在 7.1 版本提供:团队计划在 TS 7.1 中提供新的 API,届时将解决上述生态工具的适配问题。
  • 未来路线:核心重写完成后,团队将回归到新功能开发、进一步性能优化和生态API建设上,预计每3-4个月发布一个包含新功能的版本。

总结一句话

TypeScript 7.0 通过用 Go 原生重写,实现了从编译到编辑器体验的全面质变,速度提升高达一个数量级,同时保持了高度的兼容性。虽然当前版本还缺少对插件生态至关重要的 API,但这是 TypeScript 工具链迈向“原生时代”的决定性一步。

加入开源交流群

请加站长微信,免费进入交流群,和开源爱好者一起讨论。

站长微信二维码