

























Microsoft 发布 TypeScript 7.0。 这个版本最大的变化,是 TypeScript 工具链被移植到了 Go 编写的原生实现,官方称完整构建通常能获得 8 到 12 倍的速度提升,同时带来原生代码执行、多线程和共享内存等能力。开发者仍然可以通过 npm install -D typescript 安装,新版 tsc 会随包一起进入项目。 这次升级不只是命令行编译更快,也会影响日常开发里的许多等待时间。 官方用几个大型开源项目做了对比:vscode 的构建时间从 125.7 秒降到 10.6 秒,sentry 从 139.8 秒降到 15.7 秒,playwright 从 12.8 秒降到 1.47 秒。 内存占用也普遍下降,例如 bluesky 的构建内存从 1.8 GB 降到 1.3 GB。打开 VS Code 代码库中一个带错误的文件时,过去看到首个错误大约需要 17.5 秒,TypeScript 7.0 缩短到 1.3 秒以内。 为了让这个原生版本能进入生产环境,TypeScript 团队在过去一年里和多个内外部团队一起测试真实代码库,包括 Microsoft 的 Loop、Office、PowerBI、Teams、Xbox,也包括 Bloomberg、Canva、Figma、Google、Linear、Notion、Sentry、Slack、Vercel 等公司。 新语言服务器相比 TypeScript 6.0,失败的语言服务命令减少超过 80%,服务崩溃减少超过 60%。Slack 反馈 CI 中的类型检查时间从约 7.5 分钟降到 1.25 分钟,Microsoft News Services 团队则称每月节省了 400 小时 CI 构建等待时间。 TypeScript 7.0 目前还没有发布新的程序化 API。对于仍然需要访问编译器 API 的工具,比如 typescript-eslint,官方提供了 @typescript/typescript6 兼容包,可以让 TypeScript 6.0 和 7.0 并行使用。 过去不少开发者通过 @typescript/native-preview 体验新版原生实现,之后 nightly 版本会回到标准 typescript 包,并通过 typescript@next 安装。 新版也开放了一些并行控制能力。`--checkers` 可以调整类型检查 worker 数量,默认是 4;`--builders` 用来控制 --build 下并行构建项目引用的数量;`--singleThreaded` 则可以关闭并行,方便调试、对比性能,或在资源有限的环境里运行。`--watch` 模式也被重写,新的文件监听基础来自 Parcel watcher 的 Go 版本移植,用来改善跨平台监听的稳定性和资源占用。 兼容性方面,TypeScript 7.0 以 TypeScript 6.0 的类型检查和命令行行为为基础,但也继承了 6.0 的新默认设置和废弃项处理。 比如 strict 默认开启,`module` 默认是 esnext`,`stableTypeOrdering 默认开启且不能关闭。`target: es5`、`downlevelIteration`、旧的 node/node10 模块解析、`moduleResolution: classic` 等配置不再支持。 对于 Vue、MDX、Astro、Svelte、Angular 模板等依赖嵌入式 TypeScript API 的工作流,官方建议暂时继续使用 TypeScript 6.0,直到 TypeScript 7 的新 API 完成。 这次发布标志着 TypeScript 工具链进入原生实现阶段。对大型代码库来说,变化最直接地体现在构建、编辑器反馈、类型检查和 CI 等等待时间上。TypeScript 团队表示,7.0 之后会继续推进新功能、易用性改进、性能优化,并为生态补上新的 API。 #TypeScript https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。