TypeScript 7.0 正式发布
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
- 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