gpt4 book ai didi

typescript 标记的枚举获取值

转载 作者:行者123 更新时间:2023-12-02 03:51:07 26 4
gpt4 key购买 nike

我在下面标记了枚举

enum PermissionEnum {
SU = 1 << 0, // 1
Administrator = 1 << 1, // 2
User = 1 << 2 // 4
}

对于给定值6,我怎样才能得到

字符串[] -> ['管理员', '用户']

数字[] -> [2,4]

最佳答案

您可以将静态函数添加到 enum 命名空间中并使用它来进行转换。

您还可以使用一种技巧从数字中提取设置的位,而不必迭代所有未设置的位:n & (~n+1) 为您提供最低的设置位。

enum PermissionEnum  {
SU = 1 << 0, // 1
Administrator = 1 << 1, // 2
User = 1 << 2 // 4
}
namespace PermissionEnum {
export function toValues(n: PermissionEnum) {
const values: string[] = [];
while (n) {
const bit = n & (~n+1);
values.push(PermissionEnum[bit]);
n ^= bit;
}
return values;
}
}
console.log(PermissionEnum.toValues(PermissionEnum.Administrator));
console.log(PermissionEnum.toValues(PermissionEnum.Administrator + PermissionEnum.SU));

输出是:

[ 'Administrator' ]
[ 'SU', 'Administrator' ]

到数字的转换是相同的,但只是推送而不进行查找。

关于 typescript 标记的枚举获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45354289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com