在 Typescript 中传递/获取多个枚举值?

Pass / Get multiple Enum values in Typescript?

传值是枚举值的组合,得到对应的枚举字符串

这是我的场景,

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" 作为结果。如何实现?

这可以通过遍历位或遍历枚举成员来完成。遍历位似乎更清晰一些。我们利用 EnumDays 将值映射到键(例如,1SUN)以及将键映射到值(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;
}