Javascript和Typescript:使用for..of

时间:2017-10-07 13:31:58

标签: reactjs typescript ecmascript-6 generator iterable

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

1 个答案:

答案 0 :(得分:2)

  

我使用带有es5选项的Typescript,我读到它支持生成器:Generators and Iteration for ES5/ES3

它还说你需要使用--downlevelIteration标志。否则它仍会将for … of - 循环转换为数组迭代,这会在像您的生成器实例之类的迭代中失败而没有.length属性。