微软近日发布了 TypeScript 原生预览版。这个版本用 Go 语言重新写了编译器。性能提升了 10 倍!
这不是简单的优化。这是一次彻底的重构。微软团队把整个 TypeScript 编译器都用 Go 重写了。
什么是 TypeScript 原生版?
TypeScript 原生版是微软的新项目。他们把原来用 JavaScript 写的编译器,改成了用 Go 语言写。
为什么要这么做?原因很简单:
- 速度更快:Go 是编译型语言,运行速度比 JavaScript 快很多
- 并行处理:Go 天生支持并发,可以同时处理多个任务
- 内存共享:新版本可以更好地利用内存
结果就是:编译速度提升了 10 倍!
性能到底有多强?
微软用 Sentry 项目做了测试。这个项目有 9000 多个文件,100 多万行 TypeScript 代码。
原版 TypeScript 5.8:
- 编译时间:72.81 秒
- 内存使用:3.3GB
新版 TypeScript 原生版:
- 编译时间:约 7 秒
- 内存使用:3.9GB
你没看错,从 72 秒到 7 秒!这就是 10 倍的性能提升。
对于大型项目来说,这个改进太重要了。以前编译一次要等一分多钟,现在只要几秒钟。
如何使用?
安装编译器
现在就可以试用了。在你的项目里运行:
npm install -D @typescript/native-preview
然后用 tsgo
命令代替 tsc
:
npx tsgo --project ./src/tsconfig.json
VS Code 扩展
微软还发布了 VS Code 扩展。你可以在扩展市场搜索 "TypeScript (Native Preview)"。
安装后需要手动开启:
- 打开命令面板
- 运行 "TypeScript Native Preview: Enable (Experimental)"

或者在设置里开启:
"typescript.experimental.useTsgo": true
新功能支持
SX 支持
最新版本已经支持 JSX 了。React 开发者可以放心使用。
JavaScript 支持
TypeScript 原生版也支持检查 JavaScript 文件。它会读取 JSDoc 注释来做类型检查。
编辑器功能
目前支持的功能:
- ✅ 错误检查
- ✅ 跳转定义
- ✅ 悬停提示
- ✅ 代码补全
- ❌ 自动导入(开发中)
- ❌ 查找引用(开发中)
- ❌ 重命名(开发中)
注意事项
这还是预览版,有一些限制:
模块解析
如果你用的是老的模块解析方式,可能会遇到错误。建议改成:
{
"compilerOptions": {
"module": "preserve",
"moduleResolution": "bundler"
}
}
或者:
{
"compilerOptions": {
"module": "nodenext"
}
}
暂不支持的功能
--build
模式--declaration
生成声明文件- 一些老的编译目标
技术细节
为什么选择 Go?
微软选择 Go 语言有几个原因:
- 性能好:Go 是编译型语言,运行速度快
- 并发强:Go 的 goroutine 让并行处理变得简单
- 内存安全:Go 有垃圾回收,不容易出现内存问题
- 生态好:Go 有很多成熟的工具和库
架构改进
新版本不只是换了语言。微软还重新设计了架构:
- 并行解析:可以同时解析多个文件
- 增量编译:只重新编译改动的部分
- 内存优化:更好的内存管理
API 兼容性
微软知道很多工具依赖 TypeScript API。所以他们开发了兼容层。
新版本提供了 IPC 接口。其他工具可以通过进程间通信来使用 TypeScript。
他们还用 Rust 写了一个 Node.js 模块,让 JavaScript 代码可以同步调用新的编译器。
对开发者的影响
大型项目的福音
如果你的项目很大,编译时间很长,这个更新对你来说是巨大的好消息。
想象一下:
- 以前编译要等 2 分钟,现在只要 10 秒
- 以前保存文件后要等很久才能看到错误,现在几乎是实时的
- CI/CD 流水线会快很多
开发体验提升
更快的编译意味着:
- 更快的热重载
- 更快的错误反馈
- 更流畅的开发体验
对工具链的影响
很多工具都依赖 TypeScript:
- Webpack
- Vite
- ESLint
- Prettier
这些工具都会从性能提升中受益。
未来规划
微软的计划是:
- 2025 年内:完善所有主要功能
- TypeScript 7.0:正式版本会包含原生编译器
- 逐步迁移:最终
tsgo
会变成tsc
开发路线图
短期目标:
- 完善
--build
模式 - 支持声明文件生成
- 完善编辑器功能
长期目标:
- 完全替代现有编译器
- 保持 API 兼容性
- 提供迁移工具
社区反应
开发者们对这个消息很兴奋:
“
"终于不用等编译了!"
"10 倍性能提升,这太疯狂了!"
"大型项目的救星!"
当然也有一些担心:
- API 兼容性问题
- 生态系统适配
- 学习成本
但总体来说,社区反应很积极。
总结
TypeScript 原生版是一个重大突破。10 倍的性能提升不是小改进,而是质的飞跃。
虽然还是预览版,但已经可以在很多项目中使用了。如果你的项目编译慢,强烈建议试试。
这个改进对整个前端生态都有积极影响。它证明了:
- 性能优化还有很大空间
- 选择合适的技术栈很重要
- 大公司愿意投入资源做基础设施
未来几个月,我们会看到更多功能完善。到 TypeScript 7.0 正式发布时,这将成为所有 TypeScript 开发者的标配。
前端开发的新时代来了!
参考资料:
- Microsoft DevBlogs - Announcing TypeScript Native Previews
文章来源: 公众号Nodejs技术栈