打字稿中有"any enum type"的类型吗?



我正在编写一个函数,该函数将枚举(字符串或数字枚举(作为参数。我该如何声明该参数的类型?

我想要的示例:

enum WeekDay {
Mon = "Mon",
Tue = "Tue",
Wed = "Wed",
Thu = "Thu",
Fri = "Fri",
};
const logMembers = (arg: Enum) => { // TODO: How do I declare the type for arg?
Object.values(arg).forEach(member => {
console.log(member);
}
};
logMembers(WeekDay);
/* Output:
Mon
Tue
Wed
Thu
Fri
*/

枚举没有通用类型(枚举也只是对象(,但您可以将其作为一个通用函数,以获取以下任何值:

enum WeekDay {
Mon = "Mon",
Tue = "Tue",
Wed = "Wed",
Thu = "Thu",
Fri = "Fri",
};
function listEnum<T>(_enum: T): void {
Object.values(_enum).forEach(member => {
console.log(member);
})
}
listEnum(WeekDay);

或者,{[key:string]: string | number}也是有效的

相关内容

最新更新