TypeScript 7 本周发布,采用了用 Go 语言进行的全面重写,将 VS Code 的编译时间从 17.5 秒大幅缩减至 1.3 秒以下,并在大型项目中减少了高达 26% 的内存占用。这种速度提升让日常编码感觉如丝般顺滑,为整个技术栈节省了数小时的开发者时间。

为什么用 Go 重写至关重要

Microsoft 使用 Go 语言重构了编译器,取代了长期存在的 JavaScript/Node 实现。随着项目的增长,原有的代码库遇到了瓶颈——解析和类型检查会拖慢 CPU 和 RAM 有限的 CI 运行器。通过切换到一种具有内置并发能力的编译型语言,新引擎可以并行运行解析和类型检查,从而大幅缩短等待第一个错误出现的时间。

实际性能提升

来自一些主要代码库的早期基准测试说明了其影响:

  • VS Code:编译速度提升 11.9 倍,内存占用降低 18%。
  • Sentry, Bluesky, Playwright, Tldraw:速度提升了 7.7 倍至 8.9 倍。
  • Bluesky 的内存使用量也下降了 26%。

每天点击数十次“运行”或“监听”模式的开发者会发现,编辑变得更加流畅,CI 负载也更轻了。

新标志位 (flags) 让您拥有更多控制权

此次重写带来了命令行选项,让团队能够在速度和内存之间取得平衡:

  • --checkers--builders 并行启动解析和类型检查工作进程,充分利用多核 CPU。
  • --singleThreaded 强制所有工作在单个线程上运行,以便在出现竞态条件时实现可复现的调试。
  • 类型检查工作进程与构建工作进程的独立扩展,使得 CI 流水线可以为每个阶段分配恰到好处的资源。
  • 改版后的 --watch 模式使用了基于 Go 语言移植的 Parcel,不再需要对庞大的 node_modules 树进行高成本的轮询,从而保持文件变更检测的轻量化。

谁将受益,谁可能会犹豫

严重依赖 TypeScript 的前端框架(如 Next.js 和 Nuxt)将获得更快的重新构建速度和更紧密的反馈循环。像 VS Code 和 Cursor 这样的 IDE 响应更加迅速,鼓励开发者长时间留在编辑器中,而不是切换到终端进行构建。

后续关注点

  • 大型开源项目和企业级单体仓库 (monorepos) 的采用率。
  • 社区对稳定性以及是否存在潜在性能骤降 (performance cliffs) 的反馈。
  • Microsoft 增加编译器功能以进一步缩短编译时间或改进错误诊断的更新。