12月2日,TypeScript团队发布了一项重磅更新:在经过一段时间的重写后,TypeScript的编译器和语言服务已完全使用Go语言重构,其原生预览版现已可供试用。
这意味着,伴随我们多年的、基于JavaScript实现的编译器,有望在不远的将来完成使命。新版本将以原生代码运行,不再依赖JavaScript运行时环境。这本质上是一次从“脚本语言编译器”到“原生编译器”的跨越式升级。
编译与类型检查:性能的飞跃
这次重构带来的最显著变化,在于编译和类型检查的速度。
官方数据显示,在同一项目中,新版命令行编译器的执行速度比旧版快8至10倍。以几个真实项目为例:构建时间从133秒锐减至16秒,或从89秒大幅缩短到8.7秒。
值得注意的是,这种加速并非依赖于缓存或增量编译,而是纯粹的“冷启动+全量构建”性能提升。对于大型项目而言,这犹如一次开发体验的全面革新。
尝鲜体验:步骤简洁
如果你当前正在使用TypeScript开发Node.js或前端项目,可以立即按照以下步骤进行体验:
npm install -D @typescript/native-preview
# 使用 tsgo 替代 tsc
npx tsgo --project tsconfig.json
tsgo是新版原生编译器提供的命令行工具,其功能等同于传统的tsc命令,且与旧版编译器可以共存,互不冲突。
如果你使用的是VS Code编辑器,还可以从扩展市场中安装“TypeScript (Native Preview)”插件,从而在编辑器中获得原生语言服务的支持。
编辑器体验的同步进化
性能的提升不仅限于命令行编译。官方的原生预览版同样包含了语言服务,这意味着你在编辑器中常用的功能均已得到支持,包括:
- 智能代码补全
- 定义、类型、实现的跳转
- 查找所有引用
- 安全的重命名
- 悬停提示
- 代码格式化与折叠
- 快速修复建议
开发团队表示,编辑器功能曾是许多开发者对尝鲜原生版本持观望态度的原因。如今,这一关键缺口已被填补,原生版本在日常开发场景中已具备相当的成熟度。
升级建议:何时可以迁移?
我们的评估建议是:如果你追求极致的构建速度,并且项目具有一定规模,那么现在就值得一试。
- 对于中小型项目:迁移成本极低,可以立刻感受到编译和编辑器响应速度的显著提升。
- 对于大型或复杂项目:建议在开发分支或测试环境中先行体验。官方基于两万余个测试用例表明,新编译器在绝大多数情况下能输出与旧版一致的类型检查结果。
- 需要特别注意的情况:如果你的项目有特殊的构建需求,例如需要将代码输出(emit)到非常古老的ES5标准,或依赖某些基于旧版TypeScript API的工具链,则需保持谨慎。目前,原生版本在对老环境的支持、某些装饰器/emit模式以及旧API的完全兼容性方面尚有完善空间。
总而言之,只要你的项目不属于那种“年代久远、牵一发而动全身”的遗留系统,现在尝试原生版本将能获得显著的效率回报。
总结
TypeScript 7的原生预览版现已足够稳定和高效,能够胜任编译、开发和上手的全部流程。
如果你重视构建时间、追求编辑器的流畅体验、并关注团队的整体开发效率,那么这次升级绝对值得你投入时间尝试。这或许标志着TypeScript正式迈入了真正的云原生高性能时代。
|