← 返回信息流
AI 资讯Hacker News·3 小时前

TypeScript 7 正式发布

原标题:TypeScript 7

速览

微软正式发布了TypeScript 7,这是该编程语言的最新版本。新版本引入了多项新特性,提升了开发效率和代码质量。同时,性能优化使得编译和类型检查速度更快。TypeScript 7的发布将进一步巩固其在JavaScript生态中的地位。

AI 深度解读

背景

2024年,TypeScript团队宣布了TypeScript 7的正式发布。这是TypeScript项目自诞生以来最重要的一次底层重构——将原本基于JavaScript的编译器改用Go语言进行原生重写,旨在将整个工具链的速度提升一个数量级。从最初的设计理念“让JavaScript规模化”出发,TypeScript已经为跨平台高质量应用开发提供了强类型检查和丰富工具支持。但随着代码库规模的增长,原有的编译器在构建速度和编辑器响应上逐渐成为瓶颈。TypeScript 7正是为了解决这一核心问题而诞生,它利用Go语言的编译速度和共享内存多线程能力,将全量构建速度提升8到12倍,Editor中的首次错误提示时间从17.5秒降至1.3秒,幅度超过13倍。

核心内容

TypeScript 7是一个原生(Go语言编写)的TypeScript编译器端口。团队以尽可能忠实的方式完成重写——在维持原有代码库结构和逻辑的前提下编写新代码,确保两个编译器(旧版JS版和新版Go版)在结果上保持兼容和一致。关键区别在于,新代码库带来了原生代码速度、共享内存多线程以及多项新优化,典型全量构建加速在8倍到12倍之间。

安装与使用

TypeScript 7与其他版本一样,通过npm安装:

npm install -D typescript

安装后工作区会得到新的 tsc 可执行文件(可通过 npx tsc 运行)。

编辑器支持

TypeScript 7基于新的语言服务协议(LSP)实现,并利用速度和多线程改进。所有主流编辑器(VS Code、Visual Studio、WebStorm等)均能良好支持。例如,VS Code有专门针对TypeScript 7的扩展,Visual Studio会根据工作区自动启用TypeScript 7。

更快的TypeScript意味着什么

在典型开发日中,开发者会经历打开编辑器、打开TypeScript文件、查找所有引用、编辑时获取自动补全和实时错误提示、运行 tsc 构建等项目等环节。TypeScript 7让上述每个环节都更流畅:

  • 编辑器加载项目几乎瞬间完成。
  • 查找所有引用、自动补全和诊断的时间大幅缩短。
  • --watch 模式下运行 tsc,反馈循环更快,迭代速度前所未有。

文章通过实际对比展示了在大型开源代码库上TypeScript 6与7的构建时间:TypeScript 7通常更快,且在构建过程中总内存占用更低。例如在VS Code代码库中,从打开编辑器到看到第一个错误,以前需要约17.5秒,现在只需不到1.3秒——加速超过13倍。

实战测试与生产就绪

TypeScript项目拥有数万个测试(超过十年积累),每次主分支提交都会运行。但TypeScript 7并非普通发布:团队在过去一年与大量内部和外部团队合作,在真实代码库上测试,结果非常积极。参与测试的团队包括Microsoft内部的Loop、Office、PowerBI、Teams、Xbox,以及外部的Bloomberg、Canva、Figma、Google、Lattice、Linear、Miro、Notion、Sentry、Slack、Vanta、Vercel、VoidZero等。此外,团队重建了大部分测试基础设施,使其在TypeScript 7上运行,自动检测回归问题。数据显示,TypeScript 7.0的新语言服务相比TypeScript 6.0,失败的LSP命令减少了超过80%,服务器崩溃减少了超过60%。

部分用户反馈:

  • Slack工程师:TypeScript 7消除了40%的合并队列时间,CI类型检查时间从约7.5分钟降至1.25分钟。之前编辑器加载时间过长导致本地开发“几乎不可用”,现在代码库在几秒内加载,本地类型检查重新可行。
  • Vanta:在其最大的一个项目上实现了9倍加速。
  • Microsoft新闻服务团队:采用TypeScript 7每月节省400小时等待CI构建的时间。
  • PowerBI工程师:将编辑器中的TypeScript 7体验描述为“救命级”,甚至在VS Code还不支持重命名功能时就已经默认使用。
  • Loop monorepo开发者:之前的编辑器体验在其规模下“不可用”,现在“令人惊叹”。
  • Canva:语言服务从约58秒首次错误等待时间降至约4.8秒。

与TypeScript 6.0并行运行

TypeScript 7.0不附带API(计划在7.1中提供新的API)。为确保仍依赖程序化访问编译器的工具(如typescript-eslint)可以过渡,团队确保TypeScript 7.0可以与TypeScript 6.0并行运行。具体方式:

  • 发布了一个兼容包 @typescript/typescript6,它提供名为 tsc6 的可执行文件,避免与TypeScript 7的 tsc 冲突。
  • 该包还重新导出TypeScript 6.0 API,因此开发者可以在工具链中保留TypeScript 6.0的API,同时使用TypeScript 7的二进制文件。
  • 推荐通过npm别名实现:npm install -D typescript@npm:@typescript/typescript6 或在 package.json 中设置:
{
  "devDependencies": {
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  }
}

关键要点

  • Go语言原生重写:TypeScript 7将编译器从JavaScript移植到Go,利用原生代码和共享内存多线程,实现8-12倍全量构建加速。
  • 安装简便:通过npm安装 typescript 包即可获取全新 tsc 可执行文件,与旧版完全兼容。
  • 编辑器体验飞跃:基于LSP的新语言服务将首次错误提示从17.5秒降至1.3秒,自动补全、查找引用等操作几乎瞬时完成。
  • 实战验证:与Microsoft内部团队及外部企业(Slack、Canva、Figma、Google等)在真实大型代码库上测试,反馈积极,语言服务失败命令减少80%、崩溃减少60%。
  • 具体客户收益
    • Slack:CI类型检查从7.5分钟降至1.25分钟,合并队列时间减少40%。
    • Vanta:9倍构建加速。
    • Microsoft新闻服务:每月节省400小时CI等待时间。
    • Canva:首次错误等待时间从58秒降至4.8秒。
  • 并行运行支持:TypeScript 7.0不提供API,通过 @typescript/typescript6 包实现与TypeScript 6.0的并行安装,方便工具逐步迁移。
  • 测试与质量:数十万项测试,结合自动崩溃报告和激进测试,显著提升稳定性。
  • 无API但承诺后续:TypeScript 7.1将提供全新API,当前确保工具可以继续使用TypeScript 6.0 API。

意义与影响

TypeScript 7的发布不仅是版本号的跳跃,更是TypeScript生态系统的一次底层基础设施革命。它打破了多年来基于JavaScript的编译器在性能上的天花板,将开发体验提升到新的层次。对于大型单体代码库或monorepo项目,原本令人头疼的构建等待时间、编辑器卡顿、CI中漫长的类型检查等问题,将在TypeScript 7的加持下大幅缓解。这意味着开发者可以更频繁地进行本地类型检查、更快速地迭代,从而提升整体开发效率。

从生态角度来看,TypeScript 7的Go原生端口也为其他JavaScript/TypeScript工具(如Babel、ESLint等)提供了性能标杆,可能推动更多底层工具采用性能更佳的语言(如Go、Rust)进行重写。同时,TypeScript 7与旧版API的并行兼容设计降低了迁移风险,让企业可以逐步采用新版本而不必中断现有工具链。对于AI代码助手等场景,更快的编辑器响应意味着更流畅的交互体验。

总而言之,TypeScript 7不仅是一个性能更新,它重新定义了TypeScript作为规模化开发工具的可能性,并有望在未来几年内改变整个前端开发的工作流。

查看原文 →devblogs.microsoft.com