最近,TypeScript 团队宣布了一个重要计划:他们正在使用 Go 语言对 TypeScript 编译器进行完全重写。根据初步测试,在某些项目中性能提升达到了惊人的10倍,甚至部分场景下提升至15倍。

这次性能飞跃将直接惠及整个 TypeScript 生态的每一个环节:无论是通过命令行运行 tsc 编译器,还是在 IDE 中获取智能提示与错误信息。一旦新版本发布,开发者无需修改任何现有代码即可无缝升级。
性能提升的具体影响
1. IDE 体验大幅提升
你的集成开发环境将变得响应迅速。这意味着以下操作都将获得数量级的提速:
- 加载大型 TypeScript 项目
- 悬停提示 (Hovers)
- 错误检查与显示
- 跳转到定义 (Go-to-definition)
- 重命名符号 (Rename symbol)
这对于处理大型单体仓库 (monorepos) 的开发者尤其有利,这些场景下原有的 TypeScript 语言服务器速度常常成为瓶颈。受益的编辑器不仅限于 VSCode,任何集成了 TypeScript 语言服务器的编辑器都将获得同样的性能红利。
2. 命令行与构建流程加速
TypeScript 编译器 (tsc) 本身也将提速10倍,这使得本地类型检查和项目构建速度更快。
这对持续集成 (CI) 流程具有革新意义。虽然使用 esbuild (由 Go 编写) 和 swc (由 Rust 编写) 等现代构建工具进行代码转译已经很快,但类型检查 (type-checking) 一直是整个流程中的主要耗时环节。此次重写将彻底打破这一瓶颈,加速所有环境的构建过程。
3. 向后兼容性
开发者完全不需要为此修改现有的 TypeScript 代码。所有优化都在底层完成,对上层应用透明。
发布时间与开发计划
官方计划在 TypeScript 7.0 版本中发布这一重写版本。按照当前大约每3个月发布一个主版本的节奏估算,距离发布可能还有较长一段时间。不过,团队更可能遵循“准备就绪即发布”的原则,并可能提前推出 Beta 测试版供社区体验。
需要明确的是,在 Go 版本并行开发期间,现有基于 JavaScript 的 TypeScript 版本将持续获得新功能和维护,开发工作不会暂停。
技术选型:为何是 Go 而非 Rust?
TypeScript 团队在技术选型上经过了详细评估。核心原因在于,Go 的语言结构与编程模式与 TypeScript 当前的 JavaScript 实现高度相似。

这意味着现有代码库的贡献者能够更平滑地过渡到新的 Go 代码库,这对于需要并行维护两个代码库的阶段至关重要。因此,选择 Go 并非因为 Rust 不够优秀,而是 Go 更契合本次重构在工程协同与代码迁移上的特定需求。
为何不优化现有 JavaScript 代码?
要实现性能的阶跃式提升,关键在于利用现代处理器的多核能力。JavaScript 本质上运行在单线程上,虽然未来有一些共享内存的提案,但目前相关技术尚不成熟。
而像 Go 和 Rust 这样的系统级语言,其多线程支持是内置且成熟的。它们可以轻松地将工作负载分布到多个 CPU 核心上并行执行,这是其能够实现极致性能的根本原因。
|