2016-09-28 75 views
3

我在使用TypeScript转换ES7代码时遇到了问题。此代码:TypeScript中的ES7 Object.entries()不起作用

const sizeByColor = { 
    red: 100, 
    green: 500, 
}; 

for (const [ color, size ] of Object.entries(sizeByColor)) { 
    console.log(color); 
    console.log(size); 
} 

给出了错误:

TypeError: Object.entries is not a function

打字稿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" 
] 
} 

我想要遍历槽对象与Object.entries(),所以我分配了内部定义"lib": [ "es2017" ],但是,打字稿不会允许我传译它。

+0

欢迎来到SO :)请介绍你的问题......你的问题的一个问题或一个条目,详细说明你正在使用什么。添加你做过什么,做过什么,不做过什么的例子。谢谢 – Benj

+0

嗨,好些? :-) –

+0

是的:)对不起,有点迂腐,但不用担心,当我来到这里时,我也有很多呕吐;)不要忘记把所有相关/帮助你,并标记为接受当一个答案符合你的需求。谢谢 ! – Benj

回答

4

嗯,看起来我忘了将core-js polyfill注入Object.entries。导入'core-js/fn/object/entries';有了这个polyfill tr​​anspilation的作品,但IDE仍然在抱怨它。当我直接包括@types/core-js,IDE是好的,但打字稿会崩溃,由于重复的声明在“LIB/es2017”。它看起来像IDE(WebStorm)不能处理“LIB”里面设置tsconfig.json

编辑: 是的,我试图修改WebStorm设置,并设置“使用TypeScript服务(实验)”为真后,一切都OK!

+0

好吧帮我出来稍作进一步解释。你在哪里输入'core-js/fn/object/entries'? – Winnemucca

5

当我有一个全局编译器,但在./node_modules中没有本地编译器时,我可以重现您的问题。

在我的情况下,编译器只是不知道要使用哪个tsconfig.json文件。其指向特定tsconfig.json文件帮助:

tsc --project ./tsconfig.json

我还添加DOM选项到lib,因为es2017不承认控制台:

"lib": [ 
    "es2017", 
    "dom" 
] 
+0

我已经在使用'-p .'来选择项目 –

+0

我不得不在'.babelrc'中添加'“es2017”'作为预设,以及这个答案中的lib选项 –

相关问题