TypeScript 7.0 正式发布:Go 重写带来最高 12 倍速度提升
TypeScript 7.0 正式发布:Go 重写带来最高 12 倍速度提升
2026 年 7 月 8 日,微软正式发布 TypeScript 7.0。这个版本的里程碑意义在于:整个编译器用 Go 语言从头重写,完整构建速度提升 8 到 12 倍,同时内存占用也显著降低。

为什么用 Go 重写
TypeScript 最初由 TypeScript 自身编写(自举编译器),经过十多年的发展积累了庞大的代码量。随着前端项目规模不断增长,编译速度成为开发者最频繁遇到的瓶颈,尤其在大型 monorepo 中,一次完整类型检查可能需要数分钟。
微软团队在 2025 年启动了原生重写计划,目标是利用现代多核 CPU 的并行计算能力。Go 语言的共享内存多线程模型天然适合这个需求。重写过程中,团队尽可能保持原有代码结构和逻辑不变,确保新旧编译器产出的类型检查结果完全一致。
TypeScript 7 带来了三个关键变化:
- 原生代码执行速度:Go 编译为原生二进制,不再依赖 Node.js 运行时
- 共享内存多线程:解析、类型检查、代码生成可以并行执行
- 全新 watch 模式:基于 Parcel bundler 的文件监视器,跨平台更稳定
真实项目基准测试
微软在五个大型开源项目上对比了 TypeScript 6 和 7 的完整构建时间:
| 项目 | TypeScript 6 | TypeScript 7 | 加速比 |
|---|---|---|---|
| VS Code | 125.7s | 10.6s | 11.9x |
| Sentry | 139.8s | 15.7s | 8.9x |
| Bluesky | 24.3s | 2.8s | 8.7x |
| Playwright | 12.8s | 1.47s | 8.7x |
| tldraw | 11.2s | 1.46s | 7.7x |
内存方面同样有改善:
| 项目 | TypeScript 6 | TypeScript 7 | 内存变化 |
|---|---|---|---|
| VS Code | 5.2GB | 4.2GB | -18% |
| Sentry | 4.9GB | 4.6GB | -6% |
| Bluesky | 1.8GB | 1.3GB | -26% |
| Playwright | 1.0GB | 0.9GB | -11% |
| tldraw | 0.6GB | 0.5GB | -15% |

编辑器体验的质变
对开发者日常体验影响最大的是编辑器响应速度。在 VS Code 代码库中,打开一个包含类型错误的文件,从编辑器启动到看到第一个错误提示:
- TypeScript 6:约 17.5 秒
- TypeScript 7:不到 1.3 秒
find-all-references、自动补全、实时诊断等高频操作的延迟都大幅缩短。TypeScript 7 的语言服务器基于 LSP(Language Server Protocol),已适配 VS Code、Visual Studio、WebStorm 等主流编辑器。
根据微软的数据,TypeScript 7.0 的新语言服务器将失败的语言服务器命令减少了 80% 以上,服务器崩溃减少了 60% 以上。
新增并行控制参数
TypeScript 7 引入了两个实验性参数来精细控制并行度:
--checkers N
控制类型检查器的工作线程数,默认为 4。在 CPU 核心较多的机器上可以调高。例如使用 --checkers 8 时,各项目加速比进一步提升:
| 项目 | TypeScript 6 | TypeScript 7 (--checkers 8) | 加速比 |
|---|---|---|---|
| VS Code | 125.7s | 7.51s | 16.7x |
| Sentry | 139.8s | 12.08s | 11.6x |
| Bluesky | 24.3s | 2.01s | 12.1x |
| Playwright | 12.8s | 1.16s | 11x |
| tldraw | 11.2s | 1.06s | 10.6x |
代价是内存占用增加,因为每个类型检查器 worker 会维护自己的类型信息视图。在 CI 环境(CPU 核心少、内存有限)中,可以将 --checkers 调低到 1 来避免不必要的开销。
--builders N
控制项目引用(project references)的并行构建器数量,适合 monorepo 场景。--builders 与 --checkers 有乘积效应:--checkers 4 --builders 4 意味着最多 16 个类型检查线程同时运行,可能过于激进。
--singleThreaded
完全关闭并行化,解析、类型检查、代码生成全部在单线程中执行。适用于调试、与 TypeScript 6 性能对比、外部编排并行构建、或资源极度受限的环境。
与 TypeScript 6 共存方案
TypeScript 7.0 目前尚未公开编译器 API(预计 7.1 版本提供)。对于 typescript-eslint 等需要程序化访问编译器的工具,微软提供了兼容方案。
新的 @typescript/typescript6 包导出 tsc6 可执行文件和 TypeScript 6.0 的完整 API。通过 npm alias 可以让两个版本在同一项目中共存:
json{ "devDependencies": { "@typescript/native": "npm:typescript@^7.0.2", "typescript": "npm:@typescript/typescript6@^6.0.2" } }
这样,依赖 typescript 包的工具(如 typescript-eslint)继续使用 6.0 API,而 npx tsc 直接使用 7.0。
Vue、Svelte 等嵌入式语言工具链因依赖编译器 API 集成,目前仍需使用旧版 TypeScript。
企业级实践反馈
多家公司在正式发布前参与了测试:
- Slack:CI 类型检查时间从 7.5 分钟降到 1.25 分钟,合并队列等待时间减少 40%。此前编辑器加载慢到几乎不可用,工程师只能依赖 CI 做完整类型检查
- 微软 News Services:每月节省 400 小时 CI 构建等待时间
- Canva:编辑器首次报错时间从 58 秒降到 4.8 秒
- Vanta:最大项目获得 9 倍加速
- PowerBI:工程师在 rename 功能尚未支持时就将其设为默认体验
微软内部参与测试的团队包括 Loop、Office、Teams、Xbox。外部合作公司包括 Bloomberg、Figma、Google、Linear、Miro、Notion、Sentry、Slack、Vercel 等。
安装方式
bashnpm install -D typescript
此前通过 @typescript/native-preview 安装的用户(周下载量超过 850 万次),未来可通过 typescript@next 获取 nightly 构建。
watch 模式重建
TypeScript 7 的 --watch 模式完全重建,基于 Parcel bundler 的文件监视器实现跨平台高效监视。Go 标准库不提供内置文件监视 API,团队评估了多个第三方库后选择自建方案,解决了稳定性和跨平台兼容问题。
来源:Announcing TypeScript 7.0 - Microsoft DevBlogs(2026-07-08)