2016-09-28 71 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選項 –

相關問題