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
?
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-shim
Promise ne serait pas défini ...
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:
Array.from()
, Array.of()
, Number.isInteger()
, etc.)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)