【typescript-go】微软用 Go 重写的 TypeScript 编译器来了,更快更轻的类型检查新选择?
TypeScript Go(tsgo)是微软官方推出的 TypeScript 编译器原生 Go 语言实现,目标是提供与 TypeScript 6.0 行为高度一致、但启动更快、内存占用更低的替代编译器,解决大型项目中 tsc 启动慢、资源消耗高的实际痛点。
主要功能与当前支持状态如下(基于官方进度表):
– ✅ 完整程序构建:支持标准文件和模块解析(与 TS 6.0 一致,部分解析模式暂未覆盖)
– ✅ 语法解析与扫描:报错位置、信息与 TS 6.0 完全相同
– ✅ 命令行与 tsconfig.json 解析:基础配置读取已就绪(配置错误提示尚不完善)
– ✅ 类型解析与类型检查:类型系统行为一致,错误消息、位置、内容完全对齐
– ✅ JSX 支持:已完整支持
– ✅ 代码生成(JS 输出):可正常产出运行时可用的 JavaScript
– ✅ 构建模式与项目引用(Project References):已支持
– ✅ 增量构建(Incremental build):已实现
– ⚠️ JavaScript 类型推断与 JSDoc:主体完成,但部分特性被有意省略;声明文件(.d.ts)生成尚未完成
– ⚠️ 声明文件生成(Declaration emit):仅对 .ts 文件完成;.js + JSDoc 场景尚未完成
– ⚠️ 语言服务(LSP):接近全部功能实现,可用于 VS Code 等编辑器集成(需手动启用)
– 🚧 Watch 模式:原型阶段——能监听文件并重建,但无增量类型检查,性能未优化
– ❌ 公共 API:暂未开放,当前不可用于程序化调用或插件开发
安装与快速上手非常简单:
npm install @typescript/native-preview
npx tsgo # 直接替代 tsc 使用,例如:npx tsgo --build tsconfig.json
VS Code 用户还可安装 Native Preview 扩展,并在设置中添加:
"js/ts.experimental.useTsgo": true
该项目适合以下场景和用户:
– 大型单体或单仓库(monorepo)TypeScript 项目开发者:希望缩短 CI 构建时间或本地 tsc --noEmit 类型检查耗时;
– CI/CD 流水线维护者:受益于更轻量的二进制体积与更快的冷启动速度;
– VS Code 高级用户或团队工具链建设者:愿意尝试预览版语言服务以获得潜在的响应性提升;
– 关注 TypeScript 底层演进的技术决策者:可借此了解微软未来编译器架构方向(长期将合并回主仓库 microsoft/TypeScript)。
总结:TypeScript Go 是一个处于积极开发中的高保真实验性实现,目前已在核心类型检查、构建流程等关键路径上达到生产可用水平,尤其适合追求构建效率的工程化场景。但其 Watch 模式尚属原型、API 未开放、JSDoc 和 JS 声明生成也未收尾,现阶段建议作为 tsc 的补充验证工具或预研选项,而非全面替换。整体进展扎实,值得持续关注——建议访问其主页获取更详细信息。
