在Typescript中枚举值的Symbol.iterator

时间:2016-02-06 17:34:19

标签: typescript iterator symbols

我想使用Symbol.iterator为枚举迭代它的值,如下所示:

enum Color {red, green, blue}

Color[Symbol.iterator] = function*():Iterator<Color> {
        yield Color.red;
        yield Color.green;
        yield Color.blue;
    }

for (let color of Color){
 alert(color);
}

但这不起作用。什么会奏效?对我来说最重要的是不必更改for / of line。

我在for / of行上得到的错误:TS2488:Type必须有一个返回迭代器的'Symbol.iterator'方法。

1 个答案:

答案 0 :(得分:3)

我能得到的最接近的是:

enum Color {red, green, blue}

module Color 
{
    export function* Values() 
    {
        yield Color.red;
        yield Color.green;
        yield Color.blue;
    }
}

for (let color of Color.Values())
{
    alert(color);
}

虽然它稍微修改了你的for / of循环。希望它对你有任何帮助。