- 文档
- 教程
【免费下载链接】typescript-book
The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.
导读:本文以 The Concise TypeScript Book 仓库中维护的 日文 TypeScript 新闻索引 为骨架,系统梳理 TypeScript 7 从 RC 到稳定版、再到 7.1 预览期的完整演进脉络,覆盖 Go 原生编译器与语言服务、并行构建参数、原生 API 的 emit / VFS / checker 接口、编辑器体验修复以及工具链整合策略。读完你将对 TypeScript 7 的架构变化、迁移注意事项和生态影响形成一份可检索、可引用的时间线式参考。
一、新闻档案的结构与阅读方式
该新闻索引位于仓库的 website/src/content/docs/ja-jp/typescript-news/index.md,是一份"索引 + 摘要"型页面:每一条新闻以 H3 标题链接到2026/目录下的独立文章,并附发布日期与一句话摘要。其英文母版为 website/src/content/docs/typescript-news/index.md,两版保持一一对应,便于对照原文。
从仓库结构看,每条新闻文章都以统一的前置元数据(frontmatter)组织,包含title、description、lastUpdated、sidebar.order以及用于 SEO 的article:published_time,正文则采用"公開日 → 変更点 → 重要である理由 → 利用可能性 → 出典"的固定结构。这种规范化写法非常适合搜索引擎、Agent 与 LLM 抓取与引用:description直接给出该变更的一句话结论,正文再展开技术细节。
本次新闻条目按时间倒序覆盖了 2026 年 6 月至 9 月期间 TypeScript 官方与原生代码库(Go 实现)的重要动态,共 11 条,本文按主题而非时间分组,帮助你快速定位感兴趣的部分。
二、里程碑:TypeScript 7.0 发布与 RC 预览
2.1 稳定版发布(2026-07-08)
TypeScript 7.0 已发布 是第一条也是最核心的新闻。Microsoft 推出了首个基于全新 Go 原生代码构建的稳定版本,核心变化包括:
- 原生编译器与语言服务:采用原生代码、共享内存下的多线程处理及其他优化。
- 性能基准:据仓库内文章转述 TypeScript 团队公布的基准,完整构建相比 TypeScript 6 快7.7 倍到 11.9 倍。
- LSP 迁移:语言服务迁移到 Language Server Protocol,对应编辑器可借助同一原生基座加速项目加载、诊断、补全与导航。
安装命令保持与以往一致:
npm install --save-dev typescript兼容性提示(重要):TypeScript 7.0 不提供稳定的程序化 API。当前内置 TypeScript 的工具链(如 Astro、Vue、MDX、Svelte 以及部分 Angular 工作流)在新 API 可用前可能仍需 TypeScript 6。TypeScript 团队预计在7.1引入新 API,因此升级前务必确认所使用框架与工具的适配状态。
2.2 发布候选版(2026-06-18)
TypeScript 7.0 RC 公告 记录了这一"最终预览"的细节:
- 型检查逻辑从 TypeScript 6 移植,在保持既有语义的同时,借助原生代码与共享内存并行化提升性能。
- 新增并行型检查与项目引用构建能力。
RC 阶段的安装方式为:
npm install --save-dev typescript@rc兼容性方面,RC 不含稳定程序 API,团队提供@typescript/typescript6兼容包,让依赖 TS6 API 的工具可与新编译器共存;同时 RC 采用 TS6 的默认配置,并将 TS6 已弃用的选项按错误处理。官方当时的迁移建议是:评估 TypeScript 7 之前,先完成到 TypeScript 6 的迁移。
三、并行构建参数:--checkers与--builders
在 RC 与 7.0 的演进中,与性能直接相关的两个命令行选项值得单独说明(出自 RC 公告文章):
| 选项 | 作用 |
|---|---|
--checkers | 控制型检查 worker 的数量,用于并行类型检查 |
--builders | 控制项目引用 builder 的数量,用于并行项目构建 |
这两个选项是 TypeScript 7 并行化架构的对外窗口:构建过程被拆分为可并发执行的检查与构建任务,通过共享内存协调,从而支撑"完整构建提速一个数量级"的官方基准。在大型 monorepo 或深度嵌套项目中,合理调整这两个数值可以进一步压榨多核 CPU 的利用率(具体数值取决于机器核数与项目规模,官方未在仓库内给出默认值说明)。
四、原生 API 的逐步补齐
TypeScript 7 早期没有稳定程序 API,但原生代码库持续合入新接口,为工具链铺路。这一阶段的三条新闻分别对应emit、checker 类型接口、虚拟文件系统三块能力。
4.1 四种 emit 方法(2026-07-24)
原生 API 新增 emit 方法 面向需要生成 JavaScript 或声明输出的工具,合并了四种目标与选择方式各异的输出接口:
program.emit(emitOnly?: EmitOnly):将整个程序输出到(配置的虚拟文件系统所在的)文件系统,遵循noEmit、noEmitOnError等抑制输出的选项。program.emitToString(emitOnly?: EmitOnly):将整个程序以内存中的字符串结果输出,同样遵循抑制输出的选项。program.getJavaScriptEmit(files?: readonly DocumentIdentifier[]):在内存中返回选定文件的 JavaScript 输出,不应用抑制输出的选项。program.getDeclarationEmit(files?: readonly DocumentIdentifier[]):提供选定文件对应的声明输出。
这套接口的意义在于,API 使用方可以独立选择"整程序输出"与"定向内存输出"两种模式:前者用于常规编译产物生成,后者适合编辑器、LSP 插件等只需要某个文件即时结果的场景。注意:文章明确提示,该变更于 2026-07-24 合入原生代码库,但包含这些 API 的稳定 npm 版本尚未明确,工具应核对所用 TS 版本的适配情况。
4.2 typescript-eslint 所需的 checker 与类型 API(2026-09-14)
原生 API 补齐 typescript-eslint 所需接口 是工具生态兼容的关键一步。该 PR 专门针对typescript-eslint指出的缺失 API 进行补充,新增内容包括:
getAwaitedType:获取await后的类型。getContextualTypeForArgumentAtIndex:获取参数在调用处的上下文类型。getIndexInfoOfType/getIndexTypeOfType:索引信息与索引类型查询。getTypeOfPropertyOfType:读取类型属性的类型。getExportSymbolOfSymbol:符号对应的导出符号。- 接口类型与类类型新增
getThisType()。 - 为索引类型查询导出
IndexKind。
同步与异步两套原生 API 均已更新。这缩小了原生 API 与传统 TypeScript 程序 API 的能力差距,使依赖类型信息的集成工具(lint、重构、文档生成等)能在原生基座上获得原本预期的 checker 与类型数据。
4.3 分层虚拟文件系统 VFS(2026-09-09)
原生 API 新增分层虚拟文件系统 让工具无需重建整套文件系统输入即可表达文件的新增、编辑与删除。核心概念如下:
- 新 helper:
createFileSystem、createFileSystemWithLib、createFileSystemLayer,用于构造快照 API 接受的 VFS 对象。 Snapshot.update:在既有快照之上应用一个新的缓存层。
两种 VFS 的语义差异是本文重点:
| VFS 类型 | 行为 |
|---|---|
full(完整 VFS) | 完全驻留内存,不回退到宿主或会话的文件系统回调 |
layer(分层 VFS) | 缓存未命中时回退到宿主文件系统;可用removedPaths隐藏宿主上实际存在的文件或目录 |
两者均支持虚拟文件系统内部及指向宿主路径的符号链接。这一机制对编辑器类工具尤为重要:打开大型项目时,无需把全部文件读入内存,只在缓存层记录增量修改。
当前限制:使用 VFS 的快照仍被计为"真实"快照,而原生 API 目前只能同时持有 1 个真实快照,因此快照操作短期内是串行的。工具设计者需要把这一约束纳入并发策略考量。
五、语言服务与编辑器体验修复
5.1 配置诊断自动刷新(2026-07-30)
文件变更后刷新配置诊断 修复了一个编辑体验问题:此前,被监视的tsconfig.json/jsconfig.json发生变更时,诊断刷新被调度了,但快照更新没有同步调度,导致新配置错误要等到编辑器发起其他请求触发快照更新后才显现。
修复后,语言服务检测到被监视配置文件的变更,会调度一次防抖(debounced)的快照更新,从而不再依赖客户端的拉取请求,主动重新发布推送式诊断。文章特别提到回归测试使用非法的target值验证此行为。该变更同样是在 7.0 发布后合入原生代码库,稳定版 npm 版本需以安装版本的发布说明为准。
5.2 Go to Implementation 内存优化(2026-07-30)
Go to Implementation 内存改进 针对大项目、深度类型嵌套场景下的二次方内存增长。原因在于:语言服务用广度优先的工作列表搜索实现,对拥有大量实现的接口成员反复执行全程序搜索时,同一引用会重复入队,导致引用、排队任务与结果分组呈二次方增长,最终可能耗尽内存。
修复方案是在将引用节点加入工作队列前先去重,不再保留重复的符号定义。回归测试验证:当实现数量翻倍时,内存增长由二次方转变为大致线性。文章还澄清:最终返回给编辑器的响应此前已经去重,因此本次修复针对的是生成该响应过程中的内部内存与计算开销。
5.3 工作区符号搜索范围(2026-08-07)
工作区符号搜索新增作用域 引入新的workspaceSymbols.scope设置,两个取值:
allOpenProjects(默认值):在打开的所有项目中搜索符号,维持既有行为。currentProject:将搜索限制在包含指定文档的那个项目。
配合机制:原生 VS Code 扩展现在会向workspace/symbol请求附带对应的 TypeScript / JavaScript 文档(优先使用活动文档,否则回退到打开的对应文档);语言服务仅在workspaceSymbols.scope为currentProject时采用该文档,其余情况仍按全部项目搜索。
典型场景:工作区同时打开多个项目且存在同名符号时,currentProject能把结果收敛到当前上下文,避免跨项目干扰。由于默认值保持旧行为,这是一项opt-in变更。
六、类型系统与语义修正
6.1 union / intersection 合成属性的 setter 访问控制(2026-08-24)
setter 访问控制修复 修正了一个语义漏洞:此前,由 union / intersection 合成的属性会忽略 setter 的访问控制,实质上以 getter 的访问控制进行判定,导致"public getter + protected setter"的组合也会允许通过 union / intersection 进行无效写入。文章给出了可复现的示例:
declare class C1 { get foo(): number; protected set foo(value: number); } declare class C2 { get foo(): number; protected set foo(value: number); } declare const c: C1 | C2; c.foo; // 有效:读取是 public c.foo = 123; // 无效:写入是 protected修复后,原生型检查器会分别记录写入侧的访问控制:读取foo仍然合法,而赋值会正确报告访问错误。其价值在于:类可以把读取设为 public、同时刻意限制写入,即便对象类型被折叠进 union / intersection,这一边界依然保持,不会意外扩大写入权限。
6.2 ambient module 的 import attributes(2026-09-01,7.1.0 Beta)
TypeScript 7.1 为 ambient module 添加 import attributes 是 7.1 里程碑的首个亮点:模式(pattern)形式的 ambient module 声明现在可以声明 import 属性的类型,从而按type: 'css'、type: 'text'等属性区分 import。匹配规则如下:
- 当 import 带有属性时,TypeScript 可解析到匹配的模式 ambient module;匹配采用可赋值性判断。
- 多个声明同时匹配时,选择属性类型最具体的那个声明。
- 目前这些声明的属性类型限于"值为字符串字面量类型"的普通属性。
- 相同模式且属性类型相同的声明可以合并,属性类型不同的则被分别处理。
兼容性提示:该变更面向 TypeScript 7.1.0 Beta 里程碑合入,标准库不会内置 CSS 或文本 import 的声明,因此项目或工具仍需自行定义所需的 ambient module。这意味着此前依赖*.module.css之类自定义声明的工程,可以借助该能力写出按 import 属性区分类型定义的声明,但声明本身仍要自己维护。
七、工具链整合:tsgo名称废弃与主仓库回归
原生工具链整合公告(2026-07-27)澄清了原生项目的长期走向:
tsgo名称事实上被废弃:原生代码库将回归microsoft/TypeScript主仓库,使问题 backlog 重新集中管理。- 原生 VS Code 扩展不会被废弃:与 JavaScript 调试器扩展类似,计划在近期改为随 VS Code 捆绑发布。
对开发者而言,这意味着独立的预览版名称与独立仓库只是 TypeScript 7 迁移期的过渡形态,而非长期项目结构。结合前文,这条整合路线与"原生 API 逐步补齐"相互呼应:短期的独立原生代码库承担了 API 探索与性能验证,最终收敛回主仓库并进入稳定发布节奏。
八、迁移与升级行动清单
综合全部新闻条目,面向实际升级可以整理出如下清单:
- 先升 TS6:RC 公告明确建议评估 TS7 前先完成 TS6 迁移;TS7 采用 TS6 默认配置,且弃用选项按错误处理。
- 核对工具链:7.0 无稳定程序 API,Astro、Vue、MDX、Svelte、部分 Angular 工作流可能继续依赖 TS6;7.1 预计引入新 API,升级前确认框架适配状态。
- 明确 API 用途:需要产物生成用
program.emit/emitToString/getJavaScriptEmit/getDeclarationEmit;需要类型查询用 4.2 节列出的 checker 接口;需要增量文件视图用 VFS 层,并注意"单真实快照"的串行限制。 - 关注编辑器行为:
workspaceSymbols.scope可配置为currentProject;配置诊断与 Go to Implementation 的修复会自动生效,无需额外配置。 - 验证安装版本:多数 7.0 之后的合并(emit、VFS、checker API、配置诊断、setter 修复、import attributes)尚未在仓库内注明对应的稳定 npm 版本,使用前务必查看所安装版本的发布说明。
九、仓库内继续深挖的入口
如果你希望跟踪这些变更的原始证据,可直接阅读日文新闻档案下的独立文章,或对照英文母版:
- 新闻索引:日文 / 英文
- 单篇文章目录:website/src/content/docs/ja-jp/typescript-news/2026(共 11 篇,与英文版 website/src/content/docs/typescript-news/2026 一一对应)
同时,The Concise TypeScript Book 的核心内容位于 website/src/content/docs/book,其中 The Concise TypeScript Book 导论 与 TypeScript 入门 可以帮助你建立 TypeScript 语言本身的基线知识,再回到上述新闻理解 7.0 时代的架构变化。新闻文章统一采用"变更点 → 重要性 → 可用性"的结构,且每篇都标注了信息来源性质(官方公告或合并的官方 PR),引用时可直接定位。
- 文档
- 教程
【免费下载链接】typescript-book
The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.
相关推荐
TypeScript 7 原生编译器与语言服务全览:《The Concise TypeScript Book》新闻栏目 2026 年中动态解读
TypeScript 7 原生编译器与语言服务全览:《The Concise TypeScript Book》新闻栏目 2026 年中动态解读 本篇技术指南以《
文档教程TypeScript 7 原生化里程碑:The Concise TypeScript Book 新闻档案中的编译器、语言服务与原生 API 演进全解析
TypeScript 7 原生化里程碑:The Concise TypeScript Book 新闻档案中的编译器、语言服务与原生 API 演进全解析 Type
文档教程TypeScript 7 原生工具链整合:tsgo 名称退场、代码库回迁主仓库与 VS Code 扩展内建 —— The Concise TypeScript Book 新闻解读
TypeScript 7 原生工具链整合:tsgo 名称退场、代码库回迁主仓库与 VS Code 扩展内建 —— The Concise TypeScript
文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考