Итерируйте по перечислению как именованные константы (не значения!) - PullRequest
2 голосов
/ 18 марта 2020

Я нашел много сообщений о том, как получить массив возможных значений для перечислений TypeScript, но мне нужен массив типизированных именованных констант .

И вполне возможно, что этот новичок TypeScript ie использует неправильные термины / слова и что это является частью проблемы ...

enum Color {
    RED = "red",
    GREEN = "green"
}

// Object.keys(Color) gives me ["RED", "GREEN"] as strings but I want:
const allColors = new Array<Color>(Color.RED, Color.GREEN);

function takesColor(color: Color) {
    console.log("Color is", color);
}

// So I can iterate over all colors and call takesColor() like so:
for (let color of allColors) {
    takesColor(color);
}

Как мне создать allColors без объяснения причин перечисления каждого участника? Мой allColors выше не DRY.

1 Ответ

1 голос
/ 18 марта 2020

Попробуйте:

// These two are the same type
const allColors : Color[] = new Array<Color>(Color.RED, Color.GREEN);
const allColors2: Color[] = Object.values(Color);

Если вы добавите разрыв, вы увидите, что allColors и allColors2 - это один и тот же массив (["red", "green"]), и у вас не было перечислить всех участников для создания allColors2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...