С Новым годом! Форум программистов, компьютерный форум, киберфорум
TypeScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 01.04.2018
Сообщений: 12

Как получить элемент enum по индексу?

01.02.2020, 13:37. Показов 6453. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Подскажите, пожалуйста.
Вот есть у меня enum:

JavaScript
1
2
3
4
5
6
7
export enum McsSelectorType {
  Add,
  Coming,
  Custom,
  Kids,
  Vip
}
и есть такой jsx:

JavaScript
1
2
3
4
5
6
7
8
{props.mcs.mcsSelectors.map((selectorName, i) => 
                     <McsSelector
                        type={McsSelectorType[i]}
                        name={selectorName}
                        active={props.mcs.mcsSelectorActive}
                        setMcsSelector={props.setMcsSelector}
                      />
}
Так вот мой type подчеркивает красным и пишет: Type 'string' is not assignable to type 'McsSelectorType'.

Есть какой-нибудь способ передать элементы енама по их индексу?

Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2020, 13:37
Ответы с готовыми решениями:

List как получить элемент по его индексу
вот например: using System; using System.Collections.Generic; class ClassToTestCSHARP { static void Main() {

Как пройтись по списку LinkedList или получить элемент по индексу
В лабораторной работе реализован класс LinedList&lt;T&gt; Делаю метод вывода всех элементов списка на экран. Выдает ошибку в 6 строке, когда...

Получить элемент последовательности по заданному индексу
Даны действительные числа a1,…,a10 и натуральное число m. Последовательность b1,b2... бразуются по закону bk=bk-1+bk-2+…+bk-10, k=11,12,…...

3
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
10.02.2020, 23:51
Если возникает такой вопрос, значит вы что-то не так делате.
В данном случае, лучше использовать union type, а не enum:
JavaScript
1
type McsSelectorType = "Add" | "Coming" | "Custom" | "Kids" | "Vip";
Если очень хочется, то, можно ради спортивного интереса, вот так:
JavaScript
1
Object.values(McsSelectorType)[0]
2
 Аватар для Vaderkos
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
13.02.2020, 16:44
Лучший ответ Сообщение было отмечено Majard как решение

Решение

Ваше i должно быть одним из keyof McsSelectorType

Добавлено через 9 минут
zontik24, Majard, Вариант с Object.values нежелательно(свят-свят) использовать, так как спецификация не определяет порядка свойств обьектов, поэтому в зависимости от фазы луны и использованого браузера будем получать разный порядок.

Ваше i должно быть одним из keyof McsSelectorType. Судя по всему mcsSelectors - это массив с селекторами, а вы хотите использовать его как хранилище ключ значение, для этого лучше использовать обьект и итерировать по парам ключ=значение.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
const mcsSelectors: Record<keyof McsSelectorType, string> = { ... }
...
 
{Object.values(props.mcs.mcsSelectors).map(([type, selectorName]) => 
                     <McsSelector
                        type={McsSelectorType[type]}
                        name={selectorName}
                        active={props.mcs.mcsSelectorActive}
                        setMcsSelector={props.setMcsSelector}
                      />
}
Кликните здесь для просмотра всего текста
Нужно подобрать правильную структуру данных
0
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
13.02.2020, 21:39
Цитата Сообщение от Vaderkos Посмотреть сообщение
Вариант с Object.values нежелательно(свят-свят) использовать, так как спецификация не определяет порядка свойств обьектов, поэтому в зависимости от фазы луны и использованого браузера будем получать разный порядок.
я же уточнил, что ради спортивного интереса Человек удивится, что можно enum использовать в качестве объекта и увидит, как он выглядит при распечатке. Скилл повысит сразу. По крайней мере, у меня было удивление на начальных этапах обучения тайпскрипта, когда не было общего понимания "как, что и зачем"

Majard, а так, да, тут дело в самой архитектуре, как правильно сказал Vaderkos

Vaderkos, ну и еще порадовала фаза луны
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2020, 21:39
Помогаю со студенческими работами здесь

Enum, обращение по индексу
public enum ConsoleColor { // Summary: // The color black. Black = 0, // //...

Mysql_fetch_array как получить данные по индексу?
Есть таблица. Запрос $result = mysql_fetch_array(mysql_query(&quot;SELECT `A`, `B` FROM `TABL` WHERE `C`= 5)) выдаст массив строк значений...

Как получить массив значений в enum
public enum month { январь = 31, февраль = 28, март = 31, апрель = 30, ...

Как из int получить коллекцию enum-ом?
Привет! Есть перечисление: public enum UserRoles { None = 0, Admin = 1, Manager = 2, Client = 4

Как получить адрес указателя по индексу массива?
Нужно в BWImageArray сохранить адреса каждого n-ого елемента из массива BWImageArrayLine, ниже код, в BWImageArray записывается почему-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru