【问题标题】:Is there a type for "any enum type" in TypeScript? [duplicate]TypeScript 中是否有“任何枚举类型”的类型? [复制]
【发布时间】:2021-03-25 04:21:25
【问题描述】:

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

我想要的示例:

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
*/

【问题讨论】:

    标签: typescript enums


    【解决方案1】:

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

    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} 也是有效的

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 2018-10-18
      • 2018-10-13
      • 2020-09-18
      • 1970-01-01
      • 2019-12-30
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多