Do czego służy cel w tsconfig.json?


93

Co robi targetw tsconfig.jsonoznaczać?

{
  "compilerOptions": 
  {
    "sourceMap": true,
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "moduleResolution": "classic",
    "lib": [ "es2015", "dom",  "es2017" ]
  }
}

Odpowiedzi:


107

Jestem całkiem nowy w Typescript. Co oznacza Target w tsconfig.json?

targetwskazuje, który cel JavaScript powinien być emitowany z danego TypeScript . Przykłady:

target:es5

()=>nullstanie się, function(){return null}ponieważ ES5 nie ma funkcji strzałkowych.

target:es6

()=>nullstanie się ()=>nulltak, jak ES6 ma funkcje strzałek.


5
czy nadal potrzebuję Babel, jeśli celuję w es5, a mój kod maszynopisu zawiera async i czekam, czy to się skompiluje, jeśli podam element docelowy jako es5?
Ankit Raonka

4
Nie potrzebuję do tego babel 🌹
basarat

Używałem, es5ale interpretuje to destrukturyzację [...arr].mapjako arr.slice().map, która psuje się dla obiektu podobnego do tablicy, którego nie ma slice. Kiedy wybieram es6, zaczyna działać w mojej przeglądarce, ale czy będzie działać dla wszystkich?
Qwerty

@Qwerty Nie, nie będzie. Na przykład nie będzie działać w przeglądarce Internet Explorer 11, ponieważ nie obsługuje ona es6 i nie ma funkcji .map. Nawet jeśli celujesz w es5, to nadal nie będzie działać w Internet Explorerze, ponieważ zadaniem transpilera nie jest dodawanie polyfillów. Nadal musisz dodać wypełnienie, jeśli chcesz obsługiwać przeglądarki inne niż ES6.
pabrams

@pabrams, więc IE11 nie obsługuje nawet całej wersji ES5?
Qwerty,

10

Target zmienia wersję JavaScript, do której kompilujesz.

Opcje są dostępne pod adresem https://www.typescriptlang.org/docs/handbook/compiler-options.html

W duchu próby lepszego zrozumienia, jak flaga celu zmienia mój kod, skompilowałem kod testowy dla każdej z różnych wersji, aby lepiej zrozumieć różnice.

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

Notuję również, na co powinienem kierować, w zależności od środowiska, na które patrzę

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.