2

I'm writing a function that takes in an enum (either string or numeric enum) as a parameter. How would I declare the type for that parameter?

Example of what I want:

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
*/
Mike Pham
  • 437
  • 6
  • 17

1 Answers1

4

There's no general type for enums (enums are also just objects) but you could make it a generic function to take any values like this:

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);

Alternatively, {[key:string]: string | number} would also be valid