tsconfig.json 中的 target 是做什么用的

作者:编程家 分类: typescript 时间:2025-11-21

tsconfig.json 是 TypeScript 配置文件,用于配置 TypeScript 编译器的行为。其中的 target 属性用于指定编译后的 JavaScript 代码所要支持的 ECMAScript 版本。通过设置 target 属性,可以确保 TypeScript 编译器将 TypeScript 代码转换为与目标环境兼容的 JavaScript 代码。

target 属性的作用

在 TypeScript 中,target 属性用于指定编译后的 JavaScript 代码所要支持的 ECMAScript 版本。ECMAScript 是 JavaScript 的标准化规范,不同的 ECMAScript 版本会引入不同的语法和特性。通过设置 target 属性,可以确保 TypeScript 编译器将 TypeScript 代码转换为与目标环境兼容的 JavaScript 代码。

在 tsconfig.json 文件中,target 属性的可选值包括 "es3"、"es5"、"es6"/"es2015"、"es2016"、"es2017"、"es2018"、"es2019"、"es2020"、"es2021"、"esnext"。默认值为 "es3"。

不同 target 值的含义

- "es3": 生成兼容 ECMAScript 3 (ES3) 的 JavaScript 代码。ES3 是较旧版本的 JavaScript,兼容性较好,支持大多数浏览器。

- "es5": 生成兼容 ECMAScript 5 (ES5) 的 JavaScript 代码。ES5 引入了一些新的语法和内置对象,支持程度较高,适用于大多数现代浏览器。

- "es6"/"es2015": 生成兼容 ECMAScript 6 (ES6) 的 JavaScript 代码。ES6 引入了许多新的语法和特性,如箭头函数、类、模块等,适用于现代浏览器和支持 ES6 的环境。

- "es2016"、"es2017"、"es2018"、"es2019"、"es2020"、"es2021": 生成兼容相应 ECMAScript 版本的 JavaScript 代码。这些版本引入了新的语法和特性,适用于支持相应版本的环境。

- "esnext": 生成兼容最新版本 ECMAScript 的 JavaScript 代码。该选项允许使用尚未正式发布的 ECMAScript 特性,但可能不被所有环境支持。

案例代码

假设我们有一个 TypeScript 文件 "example.ts",代码如下:

typescript

class Person {

private name: string;

constructor(name: string) {

this.name = name;

}

greet() {

console.log(`Hello, ${this.name}!`);

}

}

const person = new Person("John");

person.greet();

我们可以在 tsconfig.json 文件中设置 target 属性来指定编译后的 JavaScript 代码所要支持的 ECMAScript 版本。例如,将 target 设置为 "es5",则编译后的 JavaScript 代码将兼容 ECMAScript 5:

json

{

"compilerOptions": {

"target": "es5"

}

}

通过运行 TypeScript 编译器 (tsc) 编译 "example.ts",将生成一个 JavaScript 文件 "example.js",其内容如下:

javascript

var Person = /** @class */ (function () {

function Person(name) {

this.name = name;

}

Person.prototype.greet = function () {

console.log("Hello, " + this.name + "!");

};

return Person;

}());

var person = new Person("John");

person.greet();

这段 JavaScript 代码是兼容 ECMAScript 5 的,可以在大多数现代浏览器中运行。

在 TypeScript 的 tsconfig.json 文件中,target 属性用于指定编译后的 JavaScript 代码所要支持的 ECMAScript 版本。通过设置 target 属性,可以确保 TypeScript 编译器将 TypeScript 代码转换为与目标环境兼容的 JavaScript 代码。不同的 target 值代表了不同的 ECMAScript 版本,开发者可以根据项目需求选择合适的 target 值。