通过/获取Typescript中的多个Enum值?

时间:2018-10-11 16:44:27

标签: typescript enums enum-flags

传递值,它是枚举值的组合,并获取其对应的枚举字符串。

这是我的情况,

enum EnumDays {
    NONE = 0,
    SUN = 1,
    MON = 2,
    TUE = 4,
    WED = 8,
    THU = 16,
    FRI = 32,
    SAT = 64,
    ALL = 127
}

我将值传递为5,这是SUN&TUE(1 + 4 = 5)的组合。

我想要得到“ SUN”和“ TUE”的结果。如何实现呢?

1 个答案:

答案 0 :(得分:0)

这可以通过迭代位或通过枚举成员来完成。遍历位似乎更干净。我们利用EnumDays将值映射到键(例如,将1映射到SUN)以及将值的键映射(SUN1)这一事实。 。 (尼特:这种方法不会找到2147483648的枚举值。1 << 31(即-2147483648会起作用。)

function getDayNames(value: EnumDays) {
    let names = [];
    for (let bit = 1; bit != 0; bit <<= 1) { 
        if ((value & bit) != 0 && bit in EnumDays) { 
            names.push(EnumDays[bit]);
        }
    }
    return names;
}