Javascript is required!

TypeScript原生版来了!Go语言重构,性能提升10倍

NodeJS前端
032

微软近日发布了 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)"。

安装后需要手动开启:

  1. 打开命令面板
  2. 运行 "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 语言有几个原因:

  1. 性能好:Go 是编译型语言,运行速度快
  2. 并发强:Go 的 goroutine 让并行处理变得简单
  3. 内存安全:Go 有垃圾回收,不容易出现内存问题
  4. 生态好:Go 有很多成熟的工具和库

架构改进

新版本不只是换了语言。微软还重新设计了架构:

  • 并行解析:可以同时解析多个文件
  • 增量编译:只重新编译改动的部分
  • 内存优化:更好的内存管理

API 兼容性

微软知道很多工具依赖 TypeScript API。所以他们开发了兼容层。

新版本提供了 IPC 接口。其他工具可以通过进程间通信来使用 TypeScript。

他们还用 Rust 写了一个 Node.js 模块,让 JavaScript 代码可以同步调用新的编译器。

对开发者的影响

大型项目的福音

如果你的项目很大,编译时间很长,这个更新对你来说是巨大的好消息。

想象一下:

  • 以前编译要等 2 分钟,现在只要 10 秒
  • 以前保存文件后要等很久才能看到错误,现在几乎是实时的
  • CI/CD 流水线会快很多

开发体验提升

更快的编译意味着:

  • 更快的热重载
  • 更快的错误反馈
  • 更流畅的开发体验

对工具链的影响

很多工具都依赖 TypeScript:

  • Webpack
  • Vite
  • ESLint
  • Prettier

这些工具都会从性能提升中受益。

未来规划

微软的计划是:

  1. 2025 年内:完善所有主要功能
  2. TypeScript 7.0:正式版本会包含原生编译器
  3. 逐步迁移:最终 tsgo 会变成 tsc

开发路线图

短期目标:

  • 完善 --build 模式
  • 支持声明文件生成
  • 完善编辑器功能

长期目标:

  • 完全替代现有编译器
  • 保持 API 兼容性
  • 提供迁移工具

社区反应

开发者们对这个消息很兴奋:

"终于不用等编译了!"

"10 倍性能提升,这太疯狂了!"

"大型项目的救星!"

当然也有一些担心:

  • API 兼容性问题
  • 生态系统适配
  • 学习成本

但总体来说,社区反应很积极。

总结

TypeScript 原生版是一个重大突破。10 倍的性能提升不是小改进,而是质的飞跃。

虽然还是预览版,但已经可以在很多项目中使用了。如果你的项目编译慢,强烈建议试试。

这个改进对整个前端生态都有积极影响。它证明了:

  • 性能优化还有很大空间
  • 选择合适的技术栈很重要
  • 大公司愿意投入资源做基础设施

未来几个月,我们会看到更多功能完善。到 TypeScript 7.0 正式发布时,这将成为所有 TypeScript 开发者的标配。

前端开发的新时代来了!

参考资料:

  • Microsoft DevBlogs - Announcing TypeScript Native Previews

文章来源: 公众号Nodejs技术栈