• 微软使用Go语言重写TypeScript 性能提升了10倍
  • 发布于 1周前
  • 60 热度
    0 评论
5 月 22 日,微软发布了原生版 TypeScript 的预览版。通过使用 Go 语言重写,TypeScript 实现了高达 10 倍的性能提升,开发者可以更快编译,使用起来也更流畅。

为何要重构?为何选 Go?
以前,TypeScript 编译器是用 JavaScript 写的,运行在 Node.js 上。这种做法有一些好处,比如容易配合其他工具。但也有明显的问题:
1.在大型项目中,性能迟缓、内存占用高。
2.运行效率受到 JavaScript 单线程模型的限制。
4.类型检查、构建和语言服务耦合紧密,难以模块化优化。
为了解决这些问题,今年三月,TypeScript 团队就宣布正在使用 Go 语言重构 TypeScript,引起了前端圈的广泛讨论。

微软在选新语言时,考虑了很多,比如 C# 和 Rust。最后选了 Go,有几个主要原因:
1.Go 的写法和以前的 TypeScript 编译器比较像,所以重写起来更顺利。
2.Go 有自动内存回收,开发时更省心,也能减少内存问题。
3.Go 支持并发,能同时处理多个任务,编译更快。

4.Go 编写的程序可以在很多平台上运行,TypeScript 的适用范围更广。


微软的测试结果显示,新版编译器在一些有名的项目中速度提升非常明显:
VS Code:从 77.8 秒变成 7.5 秒,快了约 10 倍。
Playwright:从 11.1 秒变成 1.1 秒,快了约 10 倍。

TypeORM:从 17.5 秒变成 1.3 秒,快了约 13 倍。


一键体验原生 TypeScript
可以通过下面的命令来体验原生版 TypeScript:
npm install -D @typescript/native-preview
然后,使用全新、临时的命令行工具 tsgo(类似于 tsc)进行类型检查和编译:
npx tsgo --project ./src/tsconfig.json
这个工具以后会替代现在的 tsc,并成为官方 TypeScript 的一部分。

编辑器支持也来了
不仅仅是命令行工具,在编辑器层面,微软也同步发布了原生 TypeScript 的 VS Code 扩展插件:TypeScript (Native Preview),可以在 VS Code 的扩展市场中搜索并安装它:

安装后,你可以在命令面板中启用:
TypeScript Native Preview: Enable (Experimental)
或在设置中打开:
{
  // UI Setting:
  "typescript.experimental.useTsgo": true
}
注意事项
原生版 TypeScript 还没有开发完,目前已知的问题包括:
功能缺失:
命令行功能:如 --build、--declaration 等还不支持。
编辑器功能:自动导入、查找所有引用和重命名等功能也还没有实现。

配置问题:如果你用的是旧的模块解析方式(比如 --moduleResolution node),可能要改成新的(比如 bundler 或 nodenext)。


未来计划
短期目标:继续补全功能,比如 --build 模式、项目引用、查找引用、重命名、函数签名提示等。
长期目标:这个预览版最终会发展成 TypeScript 7,并且每天都会构建,让大家可以第一时间试新功能。
用户评论