
微软近日发布了 TypeScript 6.0 的测试版本。值得注意的是,这将是该语言最后一个基于 JavaScript 代码库的版本。
实际上,微软团队在2025年初就已宣布,他们正在用 Go 语言重新编写 TypeScript 的原生实现。这项重写工作的目标是改善编辑器的启动速度、缩短项目的构建时间,并降低整体的内存消耗。
在计划首次公布时,TypeScript 的首席架构师安德斯·海尔斯伯格(Anders Hejlsberg)解释了这一决策背后的原因:
“自 TypeScript 诞生十多年以来,它一直是用 JavaScript 编写的。这固然带来了很多好处,但也持续带来了一些挑战,尤其是在性能和可扩展性方面。JavaScript 运行时平台本质上是为了优化 UI 和浏览器交互而设计的,对于编译器和系统级工具这类计算密集型的工作负载,它并不是最理想的选择。”
在一篇新的博客文章中,微软首席产品经理丹尼尔·罗森瓦瑟(Daniel Rosenwasser)进一步补充道,采用 Go 来重写 TypeScript,能够充分利用原生代码的高执行速度,以及共享内存多线程编程模型带来的性能优势。
他和团队指出,TypeScript 6.0 扮演着一个承前启后的关键角色:它既为未来 TypeScript 7.0 及更高版本奠定了基础,也充当了 TypeScript 5.9 与 7.0 之间的桥梁版本。当前测试版中的许多新特性,正是为了支持这一平稳过渡而设计的。
例如,在编译器选项方面,此次更新引入了一系列默认值的改变:
strict 现在默认为 true。
module 现在默认为 esnext。
target 现在默认指向当前年份对应的 ECMAScript 版本。
noUncheckedSideEffectImports 现在默认为 true。
libReplacement 现在默认为 false。
此外,对于 tsconfig.json 中的配置,rootDir 的推断逻辑也发生了变化。现在,默认会使用包含 tsconfig.json 文件的目录,而不是像过去那样根据所有非声明输入文件的公共目录来推断其位置。
作者:洛逸
这次底层语言的迁移无疑是 TypeScript 发展史上的一个重要节点,其背后的性能考量与工程实践值得开发者们持续关注。对于此类技术趋势的深入讨论,也欢迎你来云栈社区与更多同行交流。
|