Вот мое определение перечисления
export enum CallerComponent {
HOMEPAGE= 'homepage',
DEFAULT = 'default'
}
callerString = 'homepage';
const caller: CallerComponent = CallerComponent[callerString] //I'm getting undefined...
Все страницы, которые я нашел, говорят, что это путь. Я что-то упускаю?
Спасибо за помощь.
2 ответа
Вы можете попробовать что-то подобное:
const callerString: string = "homepage";
Object.keys(CallerComponent).forEach((key) => {
const component: CallerComponent = CallerComponent[key as keyof typeof CallerComponent]
console.log(component);
});
РЕДАКТИРОВАТЬ: поиск Google привел к тому же на вопрос отвечаем (с аналогичным решением тоже)
CallerComponent
компилируется в словарь как {HOMEPAGE: "homepage", DEFAULT: "default"}
. Вот почему CallerComponent ["homepage"] является undefined
.
И "homepage" === CallerComponent.HOMEPAGE
.
Итак, я в замешательстве. Чего ты хочешь достичь?
UPD: Ах, я понял. Я полагаю, вы пытались получить имя ключа по значению? Это работает с обычными перечислениями, а не с строковыми.
export enum CallerComponent {
HOMEPAGE,
DEFAULT
}
const keyName = CallerComponent[CallerComponent.HOMEPAGE]; // HOMEPAGE
Дополнительная информация находится здесь: https://www.typescriptlang.org/docs /handbook/enums.html#reverse-mappings
Имейте в виду, что члены перечисления строк вообще не генерируют обратное отображение.
Поэтому, если вы действительно хотели бы изменить его по каким-то причинам, вы можете поиграть с базовым словарем, как вы это обычно делаете в простом javascript
Похожие вопросы
Связанные вопросы
Новые вопросы
typescript
TypeScript — это типизированный надмножество JavaScript, транспилируемое в обычный JavaScript. Он добавляет в JavaScript необязательные типы, классы, интерфейсы и модули. Этот тег предназначен для вопросов, специфичных для TypeScript. Он не используется для общих вопросов по JavaScript.