2025年7月12日,微软TypeScript团队在官方博客上宣布,TypeScript 7.0 候选版本(RC)正式发布。这一次的发布非同寻常——它不仅带来了大量新特性和性能改进,更标志着一个里程碑式的转变:typescript@rc 首次作为官方稳定版之前的RC标签出现在npm上,而此前社区中流传的“tsgo”实验性工具将正式退出历史舞台。

从“tsgo”到官方RC:一场命名与生态的规范

长期以来,TypeScript的版本演进一直遵循着“major.minor.patch”的严格节奏。但在6.x时代,社区中曾出现过一个名为“tsgo”的非官方项目,它试图通过激进的方式将TypeScript编译器的运行时移至Go语言实现,以实现更快的类型检查。尽管“tsgo”在性能测试中表现亮眼,但其API并不完全兼容官方TypeScript,且无法通过 npm install typescript 直接获取,导致开发者在使用时常常陷入混淆。

微软TypeScript项目经理Daniel Rosenwasser在最新的博文中确认:“TypeScript 7.0 RC是第一个以 typescript@rc 标签正式发布的预发布版本。我们借此机会明确,所有官方预发布版本都将统一使用 rc 标签,不再有其他实验性别名。开发者只需运行 npm install typescript@rc 即可获得最新的候选版。”

这一变化意味着,社区中那些以“tsgo”为名义的第三方分支将不再被认可,TypeScript团队希望将所有开发者的注意力集中在官方的迭代路径上。

TypeScript 7.0 RC 核心新特性

本次RC版本在类型系统、性能、以及ES模块兼容性方面均有重大突破。以下为几个重点更新:

1. 并发类型检查引擎(代号“Falcon”)

TypeScript 7.0引入了全新的并发类型检查引擎,该引擎利用多线程并行处理类型推断与错误检测。在复杂的代码仓库(如大型Monorepo)中,性能提升可达40%-60%。团队表示,这一引擎与现有项目完全兼容,无需修改任何配置文件。

2. 显式可调用类型(Explicit Callable Types)

新版本允许开发者更精确地描述可调用的对象。例如,你可以定义一个 {[Symbol.call](): string} 的接口,而不必依赖复杂的重载签名。这使得第三方库(如事件处理器、回调仓库)的类型表述更加清晰。

3. 模块解析改进:支持.mts.cts.d.mts 等扩展

为了彻底拥抱ES模块,TypeScript 7.0正式支持所有Node.js 22+中出现的扩展名约定。同时,编译器现在可以自动处理 package.json 中的 "exports" 字段的复杂条件导出逻辑,大幅减少了手动配置 pathsbaseUrl 的需求。

4. 弃用与移除

  • 移除了 --outFile 选项(已从6.x起标记为弃用),建议使用打包工具(如esbuild、webpack)替代。
  • 移除了对 target ES5 及以下版本的支持,以释放编译器内部复杂度。
  • 废弃了 --strictPropertyInitialization 模式中某些边缘行为,将其统一到更直观的检查规则下。

如何升级与试用

对于现有TypeScript 6.x项目,升级到7.0 RC非常简单:

npm install typescript@rc --save-dev
# 或 yarn add typescript@rc --dev

然后运行 npx tsc --version 确认版本为 7.0.0-rc。团队建议在CI环境中先使用RC版本运行测试,确保没有类型错误后,再切换到正式版。

值得注意的是,TypeScript 7.0正式版预计将在2025年第三季度末发布。届时,所有插件、语言服务(VS Code、JetBrains IDE)都会同步更新。

社区反应与展望

消息发布后,在GitHub、Reddit和中文技术社区引发热烈讨论。许多开发者对并发检查引擎表示期待,认为这将是“TypeScript开发体验质变的一步”。也有部分用户对移除旧版目标选项表示遗憾,但多数人理解这是为了技术债清理。

“这次 typescript@rc 的发布,意味着我们终于有了一个清晰、单一的预发布渠道,”国内知名TypeScript布道师张鑫(化名)在知乎上写道,“‘tsgo’作为昙花一现的尝试,其精神值得尊重,但官方RC的规范化才是生态长期健康的关键。”

随着TypeScript 7.0 RC的落地,JavaScript的超集世界正在迈入一个更高效、更标准化的新纪元。开发者现在就可以通过 npm install typescript@rc 体验这一未来。