在打字稿中传递/获取多个枚举值?



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

这是我的场景,

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将值映射到键(例如,1映射到SUN(以及键映射到值(SUN映射到1(的事实。 (Nit:这种方法找不到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;
}

相关内容

  • 没有找到相关文章

最新更新