Вы не можете добавлять декораторы в перечисления, как если бы вы добавляли атрибуты в перечисления C #.Однако мы можем создать тип с теми же ключами, что и enum, что заставит нас указать все ключи enum с их описанием строки.
С этим объектом нам просто нужно получить ключи перечисления и найти значения в перечислении и описание в нашем дополнительном объекте.
export enum Gender {
Male = 1,
Female = 2
}
// We will geta an error if we have missing/ extra or misspelled keys
let descriptions: { [P in keyof typeof Gender]: string } = {
Female: "FemaleDescriptionExample",
Male: "MaleDescriptionExample"
}
export interface SelectItem {
label?: string;
value: any;
}
var myList: SelectItem[] = (Object.keys(Gender) as Array<keyof typeof Gender>)
.filter(p => typeof Gender[p] === "number") // The enum contains both the lookup and the reverse lookup, we only need name->value so we take only the number keys
.map(p => ({
label: descriptions[p],
value: Gender[p]
}));
console.log(myList);