Angular не принимает строковую переменную в качестве ключа объекта

К сожалению, я не могу найти ответ или решение. Итак: если я использую статическую строку в качестве ключа, она работает, но если я использую переменную, которая дает ТОЧНУЮ ТА ЖЕ строку, Angular ее не принимает.

Сообщение об ошибке странное: «Элемент неявно имеет тип «любой», потому что выражение типа «строка» не может использоваться для типа индекса». (Конечно, это НЕ верно, плюс это не индекс, а ключ. В любом случае.)

enter image description here

Спасибо за любую помощь.

В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Обработка ошибок при выполнении HTTP-запросов в JavaScript.
Обработка ошибок при выполнении HTTP-запросов в JavaScript.
Каждый проект должен выполнять HTTP-запросы, и, конечно, некоторые из этих запросов могут содержать ошибки. Нам нужно знать, как обрабатывать эти...
Включение UTF-8 в jsPDF с помощью Angular
Включение UTF-8 в jsPDF с помощью Angular
Привет, разработчики, я предполагаю, что вы уже знаете, как экспортировать pdf через jsPDF. Если ответ отрицательный, то вы можете ознакомиться с моей...
0
0
32
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

не уверен, что это то, что вы хотите. вы можете изменить свой код следующим образом.

let obj :{[key: string]: any} = {a: 1}

Спасибо за ответ: я пытаюсь интерпретировать ваше предложение в моем коде, но с меньшим успехом. Но я пытаюсь. :)

Mityu 17.05.2022 13:54

Очевидно, он не допускает строк.

Вы должны сказать, что это не единственная строка, это один из ключей объекта рендель, поэтому вы должны создать новый интерфейс и обновить функцию addItem следующим образом.

interface Rendel {
    alap: string,
    tipus: string,
    felfet: string
}


addItem(adat: {v: string, kulcs: keyof Rendel}) {
        this.rendel[adat.kulcs] = adat.v
}

Я попробовал это, но получил сообщение об ошибке: Свойство «addItem» не существует для типа «AppComponent». Странно.

Mityu 17.05.2022 14:25
Ответ принят как подходящий

вы должны сделать что-то вроде

this.rendel[adat.kulcs as keyof typeof this.rendel] = adat.v

Ух ты! Это работает. Проверяю еще раз. Большое тебе спасибо. :)

Mityu 17.05.2022 14:17

Подскажите, пожалуйста, есть ли решение объявить класс с ключами объекта rendel, а затем импортировать и использовать его?

Mityu 17.05.2022 14:49

Другие вопросы по теме