Задать вопрос
@MishaXXL

Как обойти ошибку Type 'boolean' cannot be used as an index type?

Есть стейт
const [buttonState, setButtonState] = useState(true)

Изменение происходит путем
setButtonState(!buttonState)
Описание кнопки
const btn = {
   true: { text: 'Show',  ... },
   false: { text: 'Hide',  ... }
}


При выполнении команды, TS ругается на Type 'boolean' cannot be used as an index type.
Но при этом код работает
btn[buttonState].text

Как лучше решить данную задачу с учетом TS?
  • Вопрос задан
  • 283 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 2
yarkov
@yarkov
Помог ответ? Отметь решением.
Как лучше решить данную задачу с учетом TS?


Не использовать true и false в качестве ключей объекта. Как вообще это пришло в голову?
Ответ написан
Комментировать
@milanhabr
Чтобы ответить на вопрос Алексей Ярков, причина, по которой хотелось бы это сделать, заключается в уменьшении цикломатической сложности.
Решение будет выглядеть примерно так:

btn[String(buttonState) as keyof typeof btn];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы