从ES6 iteration over object values开始,我对对象值进行了迭代。这是我的实施:
function* entries (obj): IterableIterator<any> {
for (const key of Object.keys(obj)) {
const value = obj[key];
yield [
key,
value,
];
}
}
然后我想在render()
React Component的方法中使用它:
render () {
const that = this;
const newVar = (() => {
const elements = [];
for (const [key, value] of entries(that.filters)) {
elements.push(<h2>{JSON.stringify(key)} {JSON.stringify(value)}</h2>);
}
return elements;
})();
return (
<section>
{newVar}
</section>
);
}
但是如果我在Chrome Developer控制台中使用。map
文件调试此代码,则newVar
是一个空数组。如果我在obj
生成器中提醒我entries
我得到了正确的对象。我错过了一些非常简单的事吗?提前感谢您的每一个答案。我使用带有es5
选项的Typescript,我读到它支持生成器:Generators and Iteration for ES5/ES3。
答案 0 :(得分:2)
我使用带有
es5
选项的Typescript,我读到它支持生成器:Generators and Iteration for ES5/ES3。
它还说你需要使用--downlevelIteration
标志。否则它仍会将for … of
- 循环转换为数组迭代,这会在像您的生成器实例之类的迭代中失败而没有.length
属性。