web-dev-qa-db-fra.com

Angular2 pourquoi avons-nous besoin de la cale es6

En suivant le Angular2 Quickstart Guide nous sommes chargés d'inclure es6-shim en 2 endroits:

1) index.html

<script src="node_modules/es6-shim/es6-shim.min.js"></script>

2) typings.json

"ambientDependencies": {
  "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#6697d6f7dadbf5773cb40ecda35a76027e0783b2"
}

J'avais l'impression que nous compilons notre es6 coder jusqu'à es5.

Configuré dans tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    ...

Si le résultat final est que le navigateur se charge es5, pourquoi le navigateur a-t-il besoin de cales pour es6?

20
Shawn Northrop

Les saisies sont utilisées par votre éditeur pour vous donner des conseils de code/intellisense, et es6-shim.min.js Est un code qui émule les fonctionnalités ES6 pour les navigateurs ES5. Certaines de ces fonctionnalités sont Promise, Array.from()...

Pendant que votre code est traduit en ES5, vous devez inclure es6-shim Pour pouvoir utiliser ces nouvelles fonctionnalités ... Considérez ce code ES6:

let test1 = () => 123 + 456;
let test2 = new Promise((resolve, reject ) => {});

il sera traduit en code ES5:

var test1 = function () { return 123 + 456; };
var test2 = new Promise(function (resolve, reject) { });

mais sans es6-shimPromise ne serait pas défini ...

26
Sasxa

TypeScript n'est pas fourni avec des polyfills intégrés. Il y a certaines fonctionnalités qu'il ne transpile pas, c'est là que les polyfills comme es-shim Entrent en jeu.

Le fichier de définition TypeScript vous fournira un support de frappe dans l'éditeur que vous avez choisi et le es-shim Fournira l'implémentation de la fonctionnalité que TypeScript ne transpile pas en code ES5.

Certaines de ces fonctionnalités que TypeScript ne transpile pas sont:

  • Promesses
  • Fonctions suspendues aux objets prototypes (Array.from(), Array.of(), Number.isInteger(), etc.)
  • Chargement du module

L'approche générale est la suivante:

La règle générale est que s'il y a une émission canonique/saine qui n'a pas un énorme coup de perf, nous essaierons de la supporter. Nous n'ajoutons aucune méthode d'exécution ni structure de données, ce qui est plutôt ce que core.js (ou tout pollyfil) sert à faire. - source (développeur TypeScript)

13
Joseph Woodward