ES7 Objet.entrées() à la Machine ne fonctionne pas
J'ai un problème avec transpiling ES7 code avec des caractères d'imprimerie. Ce code:
const sizeByColor = {
red: 100,
green: 500,
};
for ( const [ color, size ] of Object.entries(sizeByColor) ) {
console.log(color);
console.log(size);
}
donne l'erreur:
TypeError: Object.entries is not a function
Tapuscrit v2.0.3
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noEmitOnError": true,
"outDir": "dist",
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"pretty": true,
"lib": [ "es2017" ],
},
"exclude": [
"node_modules"
],
"include": [
"./node_modules/@types/**/*.d.ts",
"./src/**/*.ts"
]
}
Je veux itérer creux objet avec Object.entries()
, donc je lui ai donné des définitions internes "lib": [ "es2017" ]
, mais encore, tapuscrit l'habitude de me permettre de transpile.
Bienvenue 🙂 s'il vous Plaît présenter votre question... une question ou une entrée à votre problème, avec les détails à propos de ce que vous êtes en utilisant. Ajouter des exemples de ce que vous avez fait, ce qui a fonctionné et ce qui n'a pas. Merci
Salut, le mieux ? 🙂
Oui 🙂 Désolé d'être un peu pédant, mais ne vous inquiétez pas, j'ai moi aussi eu mon lot de pokes quand je suis venu ici 😉 N'oubliez pas de upvote tout ce qui est pertinent/a aidé à vous et à la marque comme acceptées si une réponse adaptée à vos besoins. Merci !
si vous utilisez angulaire 2+, vous devez ajouter une importation de base-js/es7/objet; à votre polyfills.fichier ts
Salut, le mieux ? 🙂
Oui 🙂 Désolé d'être un peu pédant, mais ne vous inquiétez pas, j'ai moi aussi eu mon lot de pokes quand je suis venu ici 😉 N'oubliez pas de upvote tout ce qui est pertinent/a aidé à vous et à la marque comme acceptées si une réponse adaptée à vos besoins. Merci !
si vous utilisez angulaire 2+, vous devez ajouter une importation de base-js/es7/objet; à votre polyfills.fichier ts
OriginalL'auteur Jan Doležal | 2016-09-28
Vous devez vous connecter pour publier un commentaire.
Je peux reproduire votre problème quand j'ai un mondial compilateur locale, mais pas l'un dans l' ./node_modules.
Dans mon cas, le compilateur ne sait tout simplement pas ce qui tsconfig.fichier json à utiliser. En lui indiquant notamment tsconfig.fichier json permet de:
tsc --project ./tsconfig.json
J'ai également ajouté dom option pour la lib, parce que es2017 ne reconnaît pas la console:
-p .
pour sélectionner projetJ'ai dû ajouter
"es2017"
comme un preset dans.babelrc
ainsi que la lib option dans cette réponseOriginalL'auteur Alexander Nechay
Hm, il semble que j'ai oublié d'injecter
core-js
polyfill pourObject.entries
. importation'core-js/fn/object/entries';
Avec cette polyfill transpilation fonctionne, mais l'IDE est encore à s'en plaindre. Quand j'inclus@types/core-js
directement, l'IDE est ok, mais la Machine va se bloquer en raison de dupliquer les déclarations dans "lib/es2017".. Il ressemble IDE (WebStorm) cant handle "lib" à l'intérieur detsconfig.json
EDIT:
Yey, j'ai essayé de modifier WebStorm paramètres, et après ensemble "Utiliser le Tapuscrit de service (expérimental)" pour vrai, tout est ok !
Réglage
es2017.object
en caractères d'imprimerie config fournit juste une déclaration deObject.entries
. Si vous êtes dans un environnement qui n'ont pas réellement de cette méthode (par exemple. Node.js 6), vous devez utiliser polyfill.core-js
bibliothèque fournit divers polyfills.OriginalL'auteur Jan Doležal
Si vous ne voulez pas inclure l'ensemble des ECMAScript 2017 (ES8) dans votre ensemble de bibliothèques, alors vous pouvez aussi utiliser
es2017.object
à seulement satisfaire la résolution deObject.entries
et connexes.Ici est un minimum de travail exemple:
src/index.ts
tsconfig.json
Remarque: Si
"target"
est fixé à"es6"
, puis la Machine utilise par défaut la suivante"lib"
entrées (si aucune n'est indiquée):["dom", "dom.iterable", "es6", "scripthost"]
.La bibliothèque par défaut écrasés lors de la configuration de
"lib"
manuellement, c'est pourquoi j'ai besoin d'ajouter"dom"
(utiliserconsole.log
dans mon code) et"es6"
afin de montrer l'utilisation de l'ES6 et partielle ES8 ("es2017.object"
).Source: Tapuscrit Options Du Compilateur
OriginalL'auteur Benny Neugebauer