TypeScript 中的 target

说明 target 如何决定 TypeScript 需要把哪些 JavaScript 特性降级转换,以及它为什么会联动默认 lib。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

TypeScript 中的 target

一句话定义

target 用来决定 TypeScript 输出的 JavaScript 需要面向哪个 ECMAScript 版本。

核心机制 / 工作原理

它回答的是:

某些较新的 JS 语法,是否要在编译阶段被降级转换。

例如:

  • 低目标版本下,某些语法会被 downlevel
  • 更高目标版本下,更多现代语法会被原样保留

官方文档还明确说明:

  • target 的变化会联动默认 lib

最小例子 / 最小场景

{
  "compilerOptions": {
    "target": "ES2022"
  }
}

ESNext

ESNext 表示“当前这版 TypeScript 所支持的最高 ECMAScript 水平”。

它很灵活,但升级 TypeScript 后含义也会变化,因此不如固定版本稳定。

常见适用场景

  • Node 后端:通常选与当前 Node 版本匹配的较新 target
  • 前端 bundler 项目:也常选较新的 ES2020 / ES2022 / ESNext
  • 老环境兼容项目:可能选更低 target

边界与易混淆点

target 不等于“运行环境真的支持所有 API”

它主要影响语法转换,不等于自动给你补运行时 API。

targetlib 经常一起看

如果你发现“语法能过,但 API 类型不对”,或“API 类型有了,但运行环境不一定有”,通常要同时回看 targetlib

参考信息

创建于 2026/5/15 更新于 2026/5/27