2015-04-25 1 views
1

J'ai installé package tapuscrit de NPM:TSC: qu'est-ce que --target drapeau de compatibilité ES3 faire?

npm install typescript 

et a couru

node_modules\.bin\tsc doodle.ts -t ES3 

doodle.ts a:

var test = document.querySelector('.test'); 

Il en écho même dans la production doodle.js.

Comment configurer si dans la sortie, je reçois:

var test = document.getElementsByClassName('.test')[0]; 

Ne devrait pas -t ES3 drapeau prendre soin de ces aspects de compatibilité?

+3

JavaScript et l'API DOM sont des choses distinctes, donc non. –

Répondre

4

drapeaux comme -es5, es3, etc ne prennent en effet soin de soutenir transpiling de TS/ES6 fonctionnalités avancées dans leur équivalent (si possible) dans les versions précédentes de JavaScript (par exemple, avec for..off). Cependant, document.querySelector ne fait pas partie de la norme ECMAScript. Cela fait partie de l'API DOM, et ignoré par TypeScript. Le transpiler n'essaie pas de fournir la compatibilité du navigateur, mais plutôt la compatibilité langue. Vous pourriez trouver des shims qui disent qu'ils sont pour des versions spécifiques d'ECMAScript qui lancent des shims d'API, mais c'est un malentendu car ils ne sont pas exactement la même chose. Avec TypeScript, vous devez toujours utiliser des shims pour les fonctionnalités DOM manquantes spécifiques au navigateur.

+0

Il convient de préciser que ES5 n'est pas non plus pris en charge lors de l'exploration. Donc, "Array.prototype.reduce" ou getters/setters d'objets ne sont pas supportés lors de l'utilisation de l'option ES3. – QueueHammer