Sie können dem Namespace enum
eine statische Funktion hinzufügen und diese für die Konvertierung verwenden.
Sie können auch einen Trick verwenden, um die gesetzten Bits aus einer Zahl zu extrahieren, ohne über alle unscharfen iterieren zu müssen: n & (~n+1)
gibt Ihnen das niedrigste gesetzte Bit.
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));
Ausgang ist:
[ 'Administrator' ]
[ 'SU', 'Administrator' ]
Die Umstellung auf Zahlen wäre das gleiche, aber nur bit
ohne Nachschlag schieben.