Я пишу функцию, которая принимает перечисление (строковое или числовое перечисление) в качестве параметра. Как мне объявить тип для этого параметра?
Пример того, что я хочу:
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.info(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.info(member);
})
}
listEnum(WeekDay);
В качестве альтернативы, {[key:string]: string | number}
также будет действительным