TypeScript 7 正式发布!Vue 暂被 “拒之门外“ !!!

TypeScript 7 终于来了。

这次微软几乎把整个 TypeScript 底层掀了:编译器、类型检查器、代码生成器、语言服务器,全部迁移到 Go 原生代码

完整构建普遍提速 8 ~ 12 倍,编辑器响应提速超过 10 倍,内存占用继续下降。

不过 Vue 开发者先别急着升级。

目前的 TypeScript 7Vue 还不能完整使用。

TypeScript 7 到底更新了什么?

TypeScript 7 最大的变化,藏在我们每天使用的 tsc 和编辑器后面。

以前的 TypeScript 编译器,本身也由 TypeScript 编写,最终运行在 JavaScript 环境中。维护方便,生态成熟,但很难充分利用多核 CPU

TypeScript 7 改成 Go 原生实现后,直接获得了原生代码性能、共享内存和多线程能力。

官方测试中,VS Code 完整类型检查从 125.7 秒降到 10.6 秒Sentry139.8 秒降到 15.7 秒Playwright12.8 秒降到 1.47 秒

多个大型项目都拿到了接近 10 倍的提升。

安装方式没有变化:

复制代码
npm install -D typescript@7

然后照常运行:

复制代码
npx tsc

命令还是那个命令,底层已经完全换了一套。

类型检查开始吃满多核 CPU

这是 TypeScript 7 最重要的新能力之一。

解析文件、类型检查、代码生成、项目构建,现在都可以并行执行 。默认情况下,TypeScript 7 会启动 4 个类型检查工作进程

机器配置足够高,还可以手动增加:

复制代码
npx tsc --checkers 8

--checkers 用来控制类型检查进程数量。

在官方测试中,VS Code 使用 --checkers 8 后,构建时间从 10.6 秒 继续降到 7.51 秒 ,相比 TypeScript 6 提升 16.7 倍

大型 Monorepo 还可以并行构建多个子项目:

复制代码
npx tsc --build --builders 4

--builders 控制同时运行多少个项目构建器。

需要限制资源,也可以切回单线程:

复制代码
npx tsc --singleThreaded

不过这里不能无脑拉满。

--checkers 4 --builders 4 最多可能同时运行 16 个类型检查器,速度更快,内存压力也会跟着上去。

全新的原生语言服务器

TypeScript 7 重写的还有语言服务器。

我们平时使用的自动补全、跳转定义、查找引用、类型悬停、内嵌提示、语义高亮、自动导入,背后都依赖它。

VS Code 项目中,从打开编辑器到显示第一个类型错误,TypeScript 6 需要约 17.5 秒TypeScript 7 只需要 1.3 秒以内

新版语言服务器还正式支持了 LSP

这意味着 TypeScript 不再只围绕 VS Code 的私有协议工作。Visual StudioWebStorm,以及其他支持语言服务器协议的编辑器,都能更容易接入。

目前 TypeScript 7 已经支持:

  • 自动导入

  • 查找全部引用

  • 可展开悬停提示

  • 内嵌提示

  • 代码镜头

  • 语义高亮

  • 导入排序

  • 删除未使用导入

  • JSX 标签补全与联动编辑

功能都还在,只是速度快了很多。

官方数据显示,新语言服务器的命令失败次数降低超过 **80%**,崩溃次数降低超过 **60%**。

--watch 模式彻底重写

以前大型项目长期运行:

复制代码
npx tsc --watch

经常会遇到 CPU 空转、文件监听不稳定、内存长期不回落等问题。

TypeScript 7 重新实现了整个 --watch 模式,底层使用 Parcel watcherGo 移植版本。

新版重点解决三个问题:

复制代码
跨平台文件监听
空闲 CPU 占用
大型项目资源消耗

开发环境空闲时,CPU 占用会明显降低

项目长时间没有操作后,TypeScript 7 还会主动释放不再使用的类型检查状态,避免内存达到峰值后一直降不下来。

对于长期运行的开发环境,这个更新非常实用。

内存占用也降了

这次性能提升,没有靠疯狂吃内存换来。

官方公布的测试数据中:

项目 TypeScript 6 TypeScript 7 变化
VS Code 5.2GB 4.2GB -18%
Bluesky 1.8GB 1.3GB -26%
Playwright 1.0GB 0.9GB -11%
tldraw 0.6GB 0.5GB -15%

对于大型项目、开发机和 CI 环境,这个变化同样重要。

速度更快,内存还更低。

默认配置大改

TypeScript 7 延续了 TypeScript 6 的新默认行为,一批旧配置开始直接报错。

主要变化包括:

复制代码
{
  "compilerOptions": {
    "strict": true,
    "module": "esnext",
    "noUncheckedSideEffectImports": true,
    "types": []
  }
}

其中最容易踩坑的是 types

以前 TypeScript 会自动加载可见的 @types 包,现在默认变成空数组。

项目依赖 Node.jsJest 等全局类型时,需要手动写出来:

复制代码
{
  "compilerOptions": {
    "types": ["node", "jest"]
  }
}

rootDir 的默认行为也变了。

很多把 tsconfig.json 放在项目根目录、源码放在 src 的项目,需要显式配置:

复制代码
{
  "compilerOptions": {
    "rootDir": "./src"
  }
}

同时,下面这些历史配置已经被移除或不再支持:

复制代码
target: es5
baseUrl
moduleResolution: node / node10
moduleResolution: classic
module: amd / umd / systemjs
downlevelIteration

所以从 TypeScript 5 直接跳到 TypeScript 7,很可能会一次冒出大量配置错误。

更稳妥的升级方式是:

复制代码
TypeScript 5
↓
TypeScript 6
↓
处理废弃配置
↓
TypeScript 7

类型系统也有变化

TypeScript 7 的重点是原生化,但类型行为也有调整。

模板字符串类型现在会正确处理 Unicode 码点。

以前对 Emoji 进行类型推导时,可能会把一个字符拆成两个 UTF-16 代理项。TypeScript 7 会把完整 Emoji 当成一个单位处理,更符合 for...of 和字符串展开的实际行为。

JavaScript 文件中的 JSDoc 类型检查也收紧了。

一些 Closure 风格的旧写法不再支持,.js.ts 文件的分析规则开始变得更加统一。

但是,Vue 还不能完整使用

看到 10 倍提速Vue 开发者可能已经准备升级了。

先等等。

TypeScript 7.0 目前没有提供稳定的编程 API

新 API 预计要到 TypeScript 7.1 才会推出,而且和旧 API 可能存在明显差异。

这会直接影响所有把 TypeScript 嵌入自身编译器和语言服务的工具:

复制代码
Vue / Volar
Svelte
Astro
MDX
Angular 模板类型检查
typescript-eslint

TypeScript 本身并不认识完整的 .vue 文件。

Vue 项目里的模板类型检查、组件 Props 推导、变量补全和代码跳转,主要依赖 Volar。而 Volar 又需要调用 TypeScript 的编程 API。

现在 TypeScript 7 没有稳定 API,Volar 暂时无法完成迁移。

所以"Vue 还不能用",准确来说是:

复制代码
普通 .ts 文件可能可以编译
.vue 文件的完整语言服务还不能切到 TS 7
模板检查和编辑器体验继续依赖 TS 6

你的 Vue 项目不一定会直接构建失败,但 .vue 文件补全、模板检查、组件类型推导和编辑器体验,还无法完整切到 TypeScript 7

现阶段强行升级,收益不一定先拿到,兼容问题可能先来了。

TypeScript 6 和 7 可以共存

为了让旧工具继续工作,官方推出了:

复制代码
@typescript/typescript6

这个包提供 TypeScript 6 API,以及独立的 tsc6 命令。

项目可以同时安装两个版本:

复制代码
{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  }
}

最终效果就是:

复制代码
tsc  → TypeScript 7
tsc6 → TypeScript 6

项目构建使用 TypeScript 7,依赖旧 API 的工具继续留在 TypeScript 6

不过普通 Vue 项目没必要折腾这套组合。

VolarTypeScript 7.1 把新 API 打通,会省事很多。

写在最后

TypeScript 7 的核心可以压缩成几行:

复制代码
Go 原生重写
完整构建提速 8~12 倍
多核并行类型检查
Monorepo 并行构建
全新 LSP 语言服务器
watch 模式彻底重做
内存占用下降
默认配置全面收紧

ReactNode.js 和普通 TypeScript 项目,现在可以开始测试。

VueSvelteAstro 用户,暂时继续留在 TypeScript 6

TypeScript 7 已经进入原生时代,但 Vue 生态还需要再等一等。

相关推荐
慕伏白2 小时前
【慕伏白】Linux 系统如何根据端口号关闭进程
linux·运维·服务器
letisgo52 小时前
VMware Workstation + Ubuntu 26.04 LTS 小白运维部署手册
linux·运维·ubuntu
蓝创工坊Blue Foundry2 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
IT探索2 小时前
Linux 查找文件指令总结
linux·算法
晚风吹长发2 小时前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
ShiXZ2133 小时前
Docker Compose 安装与配置指南
运维·docker·容器
sulikey3 小时前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
Kina_C3 小时前
NFS与Autofs快速讲解-从原理到实战配置
linux·nfs·autofs
麦聪聊数据3 小时前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库