Как я могу использовать значения перечисления в качестве индекса массива
Я пытаюсь использовать значение перечисления в качестве индекса массива, но это дает мне ошибку.
export class Color {
static RED = 0;
static BLUE = 1;
static GREEN = 2;
}
let x = ['warning', 'info', 'success'];
let anotherVariable = x[Color.RED]; <---- Error: Type 'Color' cannot be used as an index type.
Я попытался Number() и parseInt для преобразования в число, но это не работает.
Есть ли способ использовать значения Enum в качестве индекса?
2 ответа
Чтобы создать Enum, мы создаем постоянный замороженный объект. Для разницы и почему см. Цитату ниже:
const применяется к привязкам ("переменным"). Он создает неизменную привязку, т. Е. Вы не можете присвоить привязке новое значение.
Object.freeze работает со значениями и, более конкретно, со значениями объектов. Это делает объект неизменным, то есть вы не можете изменить его свойства.
От: /questions/17029095/objectfreeze-protiv-const/17029105#17029105
После этого мы можем получить доступ к ключам и значениям, как с обычным объектом.
// https://stackru.com/questions/287903/what-is-the-preferred-syntax-for-defining-enums-in-javascript
const COLORS = Object.freeze({"RED":0, "BLUE":1, "GREEN":2})
let x = ['warning', 'info', 'success'];
let anotherVariable = x[COLORS.RED];
console.log(anotherVariable)
Также проверьте: /questions/21075365/kakoj-sintaksis-yavlyaetsya-predpochtitelnyim-dlya-opredeleniya-perechislenij-v-javascript/21075372#21075372
Попробуй это.
let color = {
RED : 0,
BLUE : 1,
GREEN : 2
}
module.exports = color
let x = ['warning', 'info', 'success'];
let anotherVariable = x[color.RED];