【问题标题】:Symbol.iterator for enum values in Typescript用于 Typescript 中枚举值的 Symbol.iterator
【发布时间】:2016-02-06 17:34:18
【问题描述】:

我想使用 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 行。

我在 for/of 行遇到的错误:TS2488: Type must have a 'Symbol.iterator' method that return an iterator.

【问题讨论】:

    标签: typescript iterator symbols


    【解决方案1】:

    我能得到的最接近的是:

    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 循环。希望对你有所帮助。

    【讨论】:

    • 感谢您的回答。也许一个新的 Typescript 版本会让它成为可能?
    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 2018-10-18
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多