Для чего предназначена цель в tsconfig.json?

93

Что означает targetin tsconfig.json?

{
  "compilerOptions": 
  {
    "sourceMap": true,
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "moduleResolution": "classic",
    "lib": [ "es2015", "dom",  "es2017" ]
  }
}
Анкит Раонка
источник

Ответы:

107

Я новичок в Typescript. Что означает Target в tsconfig.json?

targetуказывает, какая цель JavaScript должна быть испущена из данного TypeScript . Примеры:

target:es5

()=>nullстанет, function(){return null}поскольку ES5 не имеет стрелочных функций.

target:es6

()=>nullстанет, ()=>nullпоскольку ES6 имеет стрелочные функции.

басарат
источник
5
Мне все еще нужен babel, если я нацелен на es5, также мой код машинописного текста содержит async и await, будет ли он компилироваться, если я укажу цель как es5?
Анкит Раонка,
4
Для этого не нужен вавилон 🌹
basarat
Я использовал, es5но он интерпретирует деструктуризацию [...arr].mapкак arr.slice().map, что нарушает работу объекта, подобного массиву, которого нет slice. Когда я нацелен на es6, он начинает работать в моем браузере, но будет ли он работать для всех?
Qwerty
@Qwerty Нет, не пойдет. Например, он не будет работать в Internet Explorer 11, поскольку он не поддерживает es6 и не имеет функции .map. Даже если вы нацеливаетесь на es5, он ВСЕ ЕЩЕ не будет работать в Internet Explorer, потому что транспилятор не должен добавлять полифиллы. Вам все равно нужно добавить полифилл, если вы хотите поддерживать браузеры, отличные от es6.
pabrams
@pabrams, значит, IE11 даже не поддерживает все ES5?
Qwerty
10

Target изменяет версию JavaScript, под которую вы компилируете.

Параметры доступны по адресу https://www.typescriptlang.org/docs/handbook/compiler-options.html.

Чтобы лучше понять, как целевой флаг изменяет мой код, я скомпилировал тестовый код для каждой из разных версий, чтобы лучше понять различия.

https://github.com/aizatto/typescript-playground/tree/master/dist/test-async-main

Я также веду записи о том, на что мне следует ориентироваться, в зависимости от того, на какую среду я смотрю.

https://www.aizatto.com/notes/typescript

Айзатто
источник