TypeScript 7.0 正式发布

๓涛声依旧
2026-07-23 11:44
阅读 405

TypeScript 7.0 正式发布:编译器迁移 Go,性能提升 8~12 倍

原文来源:Microsoft TypeScript Blog
领域:💻 编程语言


背景

2026 年 7 月 8 日,TypeScript 团队正式发布了 TypeScript 7.0。

这不是一次普通的版本升级。

它代表着 TypeScript 项目诞生以来最大的一次基础设施变革:

  • 编译器核心从 TypeScript/JavaScript 迁移到 Go
  • 全量编译速度提升 8~12 倍
  • 语言服务协议服务器(LSP)全面重写为多线程架构

从 TypeScript 5.x 时代开始,TypeScript 团队就在规划这一次 Native Port(原生端口)计划

去年发布的:

@typescript/native-preview

预览版本累计获得超过:

850 万周下载量

经过一年多的大规模测试,TypeScript 7.0 正式进入稳定版本。

Daniel Rosenwasser 在发布公告中表示:

欢迎来到 TypeScript 原生工具链的时代。


核心内容

为什么选择 Go 重写 TypeScript 编译器?

TypeScript 团队选择 Go 作为新的编译器实现语言,并不是简单追求速度,而是基于多个工程因素考虑。


1. Go 编译为机器码

传统 TypeScript 编译器运行方式:

TypeScript
    ↓
JavaScript
    ↓
Node.js Runtime
    ↓
执行

存在:

  • JIT 预热成本
  • 运行时性能限制
  • 单线程执行瓶颈

而 Go:

Go Source Code
        ↓
Machine Code
        ↓
直接执行

优势:

  • 无需 JIT 预热
  • 启动速度更快
  • 性能更加稳定

2. Go 天然支持并行计算

Go 最大特点:

  • goroutine
  • channel
  • 共享内存模型

非常适合处理:

  • 大规模代码分析
  • 类型检查
  • 项目依赖计算

尤其对于大型项目:

  • VS Code
  • Sentry
  • Playwright
  • Monorepo

多核心 CPU 可以得到更加充分利用。


3. 单二进制文件分发

Go 编译后:

typescript.exe

即可运行。

不再依赖:

  • Node.js 环境
  • npm 安装
  • 第三方运行时

跨平台部署更加简单。


TypeScript 7.0 的迁移策略

TypeScript 团队并没有重新设计 TypeScript。

核心原则:

保持语言行为一致,只替换底层执行引擎。

迁移过程中:

保持:

  • 类型检查算法一致
  • 类型系统规则一致
  • 编译结果一致

改变:

  • 编译器实现语言
  • 执行架构
  • 内存管理方式

整体架构:

TypeScript 5.x

TypeScript
    +
JavaScript Runtime


        ↓


TypeScript 7.0

Go Native Compiler
    +
Multi-thread Architecture

性能提升:8~12 倍编译速度

TypeScript 官方针对大型真实项目进行了测试。

全量编译速度对比

项目 TS 6 编译时间 TS 7 编译时间 加速比
vscode 125.7 秒 10.6 秒 11.9 倍
sentry 139.8 秒 15.7 秒 8.9 倍
bluesky 24.3 秒 2.8 秒 8.7 倍
playwright 12.8 秒 1.47 秒 8.7 倍
tldraw 11.2 秒 1.46 秒 7.7 倍

内存占用同时下降

TypeScript 7 不只是更快,同时降低了内存使用。

项目 TS 6 内存 TS 7 内存 内存变化
vscode 5.2 GB 4.2 GB ↓18%
bluesky 1.8 GB 1.3 GB ↓26%
sentry 4.9 GB 4.6 GB ↓6%
playwright 1.0 GB 0.9 GB ↓11%
tldraw 0.6 GB 0.5 GB ↓15%

得益于:

  • Go 内存管理机制
  • 更紧凑的数据结构
  • 更合理的并行模型

最终实现:

速度提升
+
内存下降

双重优化。


编辑器体验提升

过去大型 TypeScript 项目:

打开文件

↓

等待分析

↓

出现错误提示

TypeScript 7:

打开文件

↓

快速分析

↓

立即显示错误

官方测试:

操作 TS6 TS7
VS Code 首次错误提示 17.5 秒 1.3 秒以内

提升超过:

13 倍

TypeScript 7.0 的意义

TypeScript 7.0 不只是一次版本升级。

它意味着:

JavaScript 类型系统

        +

Go 原生编译器

        +

多线程语言服务

        ↓

下一代 TypeScript 开发体验

大型项目:

  • 本地开发更流畅
  • CI 构建速度更快
  • 编辑器反馈更及时

开发效率将得到明显提升。


模板字面量类型:正式支持 Unicode 码点

TypeScript 7 对模板字面量类型进行了重要改进。

过去:

TypeScript 按照 UTF-16 编码单元处理字符串。

这会导致一些特殊字符:

例如:

😀

被拆分成两个代理字符。


TypeScript 6 的行为

示例:

type HeadTail<S> =
  S extends `${infer Head}${infer Tail}`
    ? [Head, Tail]
    : never;


type Result = HeadTail<"😀abc">;

TypeScript 6:

[
  "\ud83d",
  "\ude00abc"
]

原因:

JavaScript 内部:

😀

↓

UTF-16

↓

两个 code unit

TypeScript 7 的行为

TypeScript 7:

改为按照:

Unicode Code Point

进行拆分。

结果:

[
  "😀",
  "abc"
]

行为变化

新的行为更加符合:

  • for...of
  • 字符串展开符
  • Unicode 标准

例如:

JavaScript:

[..."😀abc"]

结果:

[
  "😀",
  "a",
  "b",
  "c"
]

TypeScript 7 与 JavaScript 行为保持一致。


可能存在的兼容影响

如果以前项目:

手动模拟 UTF-16 长度:

例如:

type Length<T>

依赖代理对计算。

升级后可能出现:

类型结果变化。

但是:

对于大多数开发场景:

新行为更加符合直觉。


JavaScript 支持重构

TypeScript 7 对 JavaScript 文件分析进行了重新设计。

目标:

让:

.js 文件

=

.ts 文件

拥有更加统一的类型分析规则。


为什么调整 JavaScript 类型系统?

旧版本为了兼容:

  • Closure Compiler
  • 老旧 JSDoc
  • 历史项目

维护了大量特殊逻辑。

TypeScript 7 对这些规则进行了清理。


JSDoc @enum 调整

以前:

/**
 * @enum
 */
const Status = {
  OK: 1,
  ERROR: 2
}

TypeScript 特殊处理。

现在:

统一使用:

/**
 * @typedef
 */

方式声明类型。


@class 行为变化

以前:

/**
 * @class
 */
function User(){

}

会自动推断构造函数类型。

现在:

不再自动标记。

需要明确类型。


JSDoc 类型断言变化

旧:

/**
 * @type {string}
 */
value!

现在:

推荐:

直接使用类型标注。


Closure 风格语法废弃

旧:

function hello(string): void {

}

来自 Closure Compiler 风格。

现在:

推荐 TypeScript 标准写法:

function hello(
  name: string
): void {

}

自定义类型声明变化

以前:

类型名称可能直接使用。

现在:

必须通过:

@typedef

声明。

例如:

/**
 * @typedef User
 * @property {string} name
 */

重度 JS + JSDoc 项目注意

如果项目大量依赖:

  • JavaScript
  • JSDoc
  • 类型推断

升级 TypeScript 7 时:

需要重新检查:

  • 类型声明
  • 编辑器提示
  • 构建流程

与 TypeScript 6 的兼容方案

TypeScript 7 初期:

没有开放稳定程序化 API。

预计:

TypeScript 7.1

提供完整 API 支持。


官方提供兼容包

微软推出:

@typescript/typescript6

用于:

旧工具链兼容。


双版本共存方案

package.json:

{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  }
}

配置后:

执行:

npx tsc

使用:

TypeScript 7

而:

例如:

typescript-eslint

等工具:

仍然可以调用:

TypeScript 6 API

当前框架兼容情况

部分生态工具:

暂时还未完全适配 TypeScript 7。

包括:

  • Vue
  • MDX
  • Astro
  • Svelte

原因:

依赖:

Volar
TypeScript API

官方计划:

在:

TypeScript 7.1

完成适配。


编辑器体验与生产验证

TypeScript 7 针对编辑器体验进行了大量优化。


VS Code 支持

VS Code 用户:

可以安装官方扩展。

启用:

TypeScript 7 多线程语言服务器

新版语言服务器:

支持:

  • LSP 请求并发处理
  • 多线程分析
  • 更稳定服务

语言服务性能提升

官方数据:

错误:

下降:

80%+

服务器崩溃:

下降:

60%+

企业真实反馈

TypeScript 7 已经过大量企业验证。

参与测试:

  • Microsoft 内部团队
  • Bloomberg
  • Canva
  • Figma
  • Google
  • Sentry
  • Slack
  • Vercel

Slack 使用反馈

效果:

CI 类型检查:

7.5 分钟

↓

1.25 分钟

合并队列等待时间:

减少:

40%

大型仓库本地开发体验明显改善。


Vanta 使用反馈

旗舰项目:

编译速度提升:

9 倍

Microsoft News Services

每月减少:

400 小时

CI 等待时间。


Canva 使用反馈

首次错误提示:

从:

58 秒

降低到:

4.8 秒

PowerBI 使用反馈

即使部分重构功能还未完善:

仍然将 TypeScript 7:

设为默认版本。

评价:

拯救生命级优化


Microsoft Loop

Monorepo 场景:

从:

无法流畅使用

变成:

流畅开发

未来路线图

TypeScript 7.0 完成:

Go 编译器重写工程

未来重点:


1. 回归语言功能创新

后续版本:

将重新聚焦:

  • 新语法支持
  • 类型系统增强
  • 开发体验优化

2. TypeScript 7.1

预计:

3~4个月后

发布。

主要目标:

  • 提供稳定程序化 API
  • 完善生态工具支持

3. 完善前端框架支持

重点:

  • Vue
  • Svelte
  • Astro
  • MDX

实现:

原生 TypeScript 7 加速。


总结与展望

TypeScript 7.0 是 TypeScript 十二年发展史上最重要的版本之一。

它完成了一次底层革命:

旧 TypeScript

JavaScript Runtime

        ↓


新 TypeScript

Go Native Compiler

        +

Multi-thread Architecture

核心收益

编译速度

提升:

8~12倍

编辑器体验

错误反馈:

秒级完成。


CI 构建

大型项目:

分钟级任务降低到秒级。


内存优化

速度提升同时:

降低资源消耗。


升级成本

TypeScript 7 同样带来迁移挑战:

包括:

  • 配置默认变化
  • 老旧 API 删除
  • 模块系统调整
  • JSDoc 行为变化

老项目:

需要规划迁移。

新项目:

可以直接拥抱。


TypeScript 7.0 的最终目标

未来 TypeScript:

将更加:

  • 原生化
  • 高性能化
  • 标准化
  • 工程化

欢迎来到 TypeScript 原生工具链的时代。

评论 0

最热最新
暂无评论
๓涛声依旧Lv.1
0
影响力
0
文章
0
粉丝