Используйте Object.values, поскольку цикл for просто обрабатывает его как итерацию по объекту.
enum Colors {
Red = "Red",
Green = "Green",
Yellow = "Yellow"
}
function doStuff(mycolor: Colors): void {
console.log(mycolor);
}
Object.values(Colors).forEach(color => doStuff(color));
Полагаю, цвета - это только значения, а не записи перечисления, так как вы также можете использовать это:
Object.entries(Colors).forEach((color: [string, Colors]) => doStuff(color[1]));
Также имейте в виду, что для циклов , как правило, не годятся для вещей, которые не имеют операторов if
или switch
.Интересно, что если вы добавите более глубокую логику в цикл for, TypeScript определит тип:
for (const color in Colors) {
if (color === Colors.Green) {
// Now the cat is either dead or alive
doStuff(color);
}
}
Object.entries все еще новый, поэтому убедитесь, что ваш tsconfig.json
ссылается на es2017
как запись для compilerOptions/lib
.