Для чого призначений target у tsconfig.json?


93

Що означає targetв 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, а також мій код машинопису містить асинхронізацію та чекаю, чи буде це компілювати, якщо я дам ціль як es5?
Ankit Raonka

4
Не потрібно для цього бабеля 🌹
басарат

Я використовував, es5але він інтерпретує деструктуризацію [...arr].mapяк arr.slice().map, що порушує масивний об'єкт, якого немає slice. Коли я націлююсь на es6, він починає працювати в моєму браузері, але чи буде це працювати для всіх?
Кверті,

@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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.