TypeScript 中的 target
说明 target 如何决定 TypeScript 需要把哪些 JavaScript 特性降级转换,以及它为什么会联动默认 lib。
#tech / dev
#resource / typescript
#type / concept
#status / growing
[!info] related notes
- 所属 MOC: TypeScript MOC
- 配置入口: tsconfig 使用详解
- 并列概念: TypeScript 中的 lib, TypeScript 中的 module
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。
target 和 lib 经常一起看
如果你发现“语法能过,但 API 类型不对”,或“API 类型有了,但运行环境不一定有”,通常要同时回看 target 与 lib。
参考信息
- TSConfig
target: https://www.typescriptlang.org/tsconfig/target.html