大家好,我是煎鱼。
前段时间社区里掀起了一波大热潮,甚至在电梯间都偶有同事拍一拍我,说到听说 TypeScript7.0 要用 Go 重写了,真牛逼。你知道吗?
实则上是:TypeScript7.0 编译器和工具的原生移植至用 Go 编写,以此实现大幅改善编辑器启动,将大多数构建时间缩短 10 倍,并大幅减少内存使用量的目的。

消息本身是由 @Anders Hejlsberg 在A 10x Faster TypeScript[1]中放出来的消息,其头衔是:微软技术研究员,TypeScript 首席架构师。C#、Delphi 和 Turbo Pascal 的原创设计者。
TS 选型核心依据
在 microsoft/typescript-go[2] 项目中,官方发起了 《Why Go?[3]》。可以详细的看到选择的缘由:

以下为原文的部分总结。选取了一些我认为比较有用的。
部分选择依据
1、代码兼容性
Go 的代码模式与现有 TypeScript 代码库的编码范式(内存管理、数据突变、多态实现等)高度契合。
规避完全重构风险,采用渐进式移植策略保留已有行为特征与关键优化。
2、内存管理架构
精细化内存控制:
支持对象级/字段级内存布局定制,无需全局关注内存管理细节。
AST 等长生命周期对象管理更方便。
GC 性能平衡策略:
批量编译场景可完全规避 GC(进程结束后自动释放)。
非批量场景通过预分配+逻辑 GC 触发点设计,将 GC 影响降至毫秒级。
对比其他语言方案,代码复杂度降低 30%+ 的同时保持同等运行时效率。
3、工程实践
代码可移植性:基于 Go 与 TS 的结构相似性,实现核心算法跨语言变更同步率 85%+
编译工具链支持:Go 原生支持交叉编译,单二进制部署简化工具链复杂度
并发模型适配:Goroutine 机制为未来分布式编译预留架构扩展空间
性能提升情况
TS 官方的本机实现已经能够加载许多流行的 TypeScript 项目,包括 TypeScript 编译器本身。
下面是在 GitHub 上不同大小的一些流行代码库上运行 tsc 的时间:

简单来讲:大幅提速,官方很兴奋。摩拳擦掌中。
Go 社区的快速响应
这次 TS 的大动作和在微软博客上宣发,在国内外都引发了一波热潮。
在 Go 社区中也有同学迅速展开了行动,@Jorropo 光速提交了一版逃逸分析的优化反馈和 issues[4]:

@Jorropo 在尝试新的 TypeScript 编译器时,发现性能有问题。花费了 70s:
________________________________________________________
Executed in 70.51 secs fish external
usr time 159.17 secs 543.00 micros 159.17 secs
sys time 5.49 secs 249.00 micros 5.49 secs
基于其对自身机器的配置了解,160 ÷ 70 ≈ 2.3
计算得知多核利用率较低。
为此通过研究,得知最大的异常耗时在于:github.com/microsoft/typescript-go/internal/checker
:
github.com/microsoft/typescript-go/internal/checker
________________________________________________________
Executed in 44.97 secs fish external
usr time 50.51 secs 413.00 micros 50.51 secs
sys time 0.32 secs 142.00 micros 0.32 secs
随后,@thepudds(主要负责 Go 内的性能、模糊测试和 Go Module 等)光速提交了多个 CL 进行优化,提高了至少 5 倍的性能:
escape analysis total package compile time
go1.24.1 47.109 sec 50.60 sec
cl-657179-ps3 8.095 sec 11.57 sec
parallel-wip 2.844 sec 6.28 sec
第一行是 Go 1.24,第二行时合了优化 CL 后的。第三个是 WIP 并行版本(也就是正在发布上线后的实际性能提高可能会更好)。
总结
这次对于 TypeScript 编译器和工具原生移植用 Go 来写,对于 Go 这一门编程语言来讲,是非常不错的。生态圈多了一名大将。也意味着用户群体受益的更多。
结合 Go 社区的反响来看,优化还是非常及时的,态度上也是比较积极支持。
较为尴尬的是,在微软宣发的博客内,一滑动评论区,一眼看到一个太刺激的评论:

(打脸自家编程语言?)
参考资料
[1]
A 10x Faster TypeScript: https://devblogs.microsoft.com/typescript/typescript-native-port/
[2]microsoft/typescript-go: https://github.com/microsoft/typescript-go
[3]Why Go?: https://github.com/microsoft/typescript-go/discussions/411
[4]issues: https://github.com/golang/go/issues/72815
关注和加煎鱼微信,
一手消息和知识,拉你进技术交流群👇
你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路。
日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!
原创不易 点赞支持