¿Para qué sirve el objetivo en tsconfig.json?

93

¿Qué significa targetin tsconfig.json?

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

Respuestas:

107

Soy bastante nuevo en Typecript. ¿Qué significa Target en tsconfig.json?

targetsignifica qué destino de JavaScript debe emitirse desde el TypeScript dado . Ejemplos:

target:es5

()=>nullse convertirá function(){return null}en ES5 no tiene funciones de flecha.

target:es6

()=>nullse convertirá ()=>nullen ES6 tiene funciones de flecha.

basarat
fuente
5
¿Todavía necesito babel si apunto a es5 también mi código mecanografiado contiene async y await, se compilará si doy target como es5?
Ankit Raonka
4
No necesito a Babel para eso 🌹
basarat
Estaba usando es5pero interpreta la desestructuración [...arr].mapcomo arr.slice().map, que se rompe para un objeto similar a una matriz que no tiene slice. Cuando apunto a es6, comienza a funcionar en mi navegador, pero ¿funcionará para todos?
Qwerty
@Qwerty No, no lo hará. Por ejemplo, no funcionará en Internet Explorer 11, ya que no es compatible con es6 y no tiene la función .map. Incluso si apunta a es5, TODAVÍA no funcionará en Internet Explorer, porque no es trabajo del transpilador agregar polyfills. Aún necesitaría agregar un polyfill si desea admitir navegadores que no sean es6.
Pabrams
@pabrams, ¿entonces IE11 ni siquiera es compatible con todo ES5?
Qwerty
10

Target cambia la versión de JavaScript en la que está compilando.

Las opciones están disponibles en https://www.typescriptlang.org/docs/handbook/compiler-options.html

Con el ánimo de tratar de comprender mejor cómo la bandera de destino cambia mi código, compilé un código de prueba para cada una de las diferentes versiones para tener una mejor comprensión de las diferencias.

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

También estoy tomando notas de lo que debería apuntar según el entorno en el que estoy mirando.

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

aizatto
fuente