La syntaxe ES6 est-elle également compilée par le compilateur TypeScript? Ou dois-je utiliser un compilateur supplémentaire (Babel)?
Je ne suis pas d'accord avec la réponse de Fylax. Le compilateur dactylographiée ne nécessite pas un outil supplémentaire pour convertir la syntaxe ES6 à 3 ES ou 5.
Le compilateur dactylographiée tranpiles la nouvelle syntaxe (let
, for … of
, les fonctions de direction, les paramètres de repos, etc.) à 3 ES ou 5. Mais il ne fournit pas de polyfill par lui-même. Pour utiliser une API récente (comme Promise
) sur une ancienne machine virtuelle ES 3 ou 5, vous devez:
- Charge un polyfill (comme es6-promise) qui rend l'API disponible;
- Dites au compilateur d'utiliser les typings standard pour cette API.
Il s'agit d'une option de conception robuste. Avec le typage, vous devez choisir avec soin les polyfills dont vous avez besoin et les tester sur les différents navigateurs que vous ciblez.
Par défaut, lorsque la cible est ES 3 ou ES 5, le compilateur n'utilise pas les définitions de l'API ECMAScript récente. Voir the documentation:
Note: Si --lib
n'est pas spécifié une bibliothèque par défaut est injecté. La bibliothèque par défaut est injecté:
► Pour --target ES5
: dom,es5,scripthost
Si un polyfill fait une API disponible, nous pouvons configurer le compilateur pour l'utiliser. Voici un exemple de fichier de configuration tsconfig.json
pour l'utilisation de promesses sur ES5 VM:
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "es5", "es2015.promise"]
}
}
Cependant, Babel peut convertir plus de fonctionnalités à 5 ES que tapuscrit ne. Voir the compatibility table from Kangax.[OMI, Babel fait plus avec la quantité lessquality.]
utilisation babel pour ES6 –
Il depends - voir [option compilateur] '--target' (https://www.typescriptlang.org/docs/handbook/ compiler-options.html). – artem
Oui, ils le sont, si un 'target' correct est spécifié. Certains d'entre eux sont pris en charge par 'es5' uniquement dans les versions récentes (fonction' async') ou ne sont pas supportés du tout ('new.target') – estus