2017-10-07 108 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属性的迭代器上失败。