2017-10-07 162 views
0

ES6 iteration over object values我採用了迭代對象值的方式。下面是我實現的:Javascript和Typescript:使用for..of對對象進行迭代

function* entries (obj): IterableIterator<any> { 
    for (const key of Object.keys(obj)) { 
     const value = obj[key]; 
     yield [ 
      key, 
      value, 
     ]; 
    } 
} 

然後我想用在render()陣營組件的方法:

但是,如果我調試此代碼。 Chrome Developer控制檯中的map文件,newVar是一個空數組。如果我在entries發電機中報警obj,我得到了正確的對象。我錯過了很簡單的事情嗎?預先感謝您的每一個答案。我使用Typescript與es5選項,我讀它支持生成器:Generators and Iteration for ES5/ES3

+1

順便說一句,你不應該需要'那個'也不需要IIFE。 – Bergi

+1

您確定您正在傳遞您鏈接的TypeScript文檔中提及的'--downlevelIteration'標誌嗎? – Bergi

+0

@Bergi我不是:)非常感謝你,我在你回答我之前浪費了幾個小時,請寫下你的文章作爲新的答案,我會接受它。我知道這是愚蠢的簡單:) –

回答

2

我使用Typescript和es5選項,我讀到它支持生成器:Generators and Iteration for ES5/ES3

它還說,你需要使用--downlevelIteration標誌。否則,它仍然會將for … of循環轉換爲數組迭代,該迭代在您的生成器實例沒有.length屬性的迭代器上失敗。