Идентификатор ‘X’ не определен. ‘Y’ не содержит такого члена

#javascript #angular #components

#javascript #угловой #Компоненты

Вопрос:

У меня есть следующий интерфейс, и я могу передать его значения параметров базовому компоненту. Однако, хотя я мог бы передавать строковые значения без каких-либо проблем, я не могу передавать логические значения и сталкиваюсь с «Идентификатор ‘isDisabled’ не определен. Ошибка ‘CustomButton’ не содержит такого элемента».

 export interface CustomButton {
    name: string;
    operation: string;
    tooltip: string;
    isDisabled?: boolean;
}
 

С другой стороны, я устанавливаю значение по умолчанию isDisabled в компоненте, из которого я вызываю базовый компонент:

 buttons: CustomButton[];
isEmployeeDisabled = false; // set the value while defining variable

this.buttons = [
  {
    name: 'edit',
    tooltip: 'Edit Employee',
    operation: 'Delete',
    isDisabled: this.isEmployeeDisabled
    // isDisabled: true // if I use like this, it works fine but still gives that error
  }
];  
 

Я не смог найти, почему isDisabled не является известным свойством. Как я могу решить эту проблему?

Комментарии:

1. this.buttons: CustomButton[] = […], попробуйте это и посмотрите, выдает ли ide вам ошибки или предупреждения

2. Спасибо, Джек, но я уже использую buttons: CustomButton[]; определение, как я добавил к вопросу. Итак, я не могу использовать его, как вы упомянули, поскольку он уже определен таким образом. Есть еще идеи?

3. Проблема, по-видимому, связана с логическим типом, потому что нет проблем с другими типами при использовании их таким же образом.

4. Вы правы, мой плохой. Я воссоздал ваш сценарий и не получаю ошибок, какую версию ionic вы используете?

5. Что вы имеете в виду под ionic? Я использую Angular 10

Ответ №1:

Попытка с помощью Stackblitz выдает мне эту ошибку:

 Type '{name: string; tooltip: string; operation: string; isDisabled: boolean; } 'is not assignable to type' CustomButton '.
Object literal may only specify known properties, and 'operation' does not exist in type 'CustomButton'.
 

Проблема в том, что operation свойство в interface отсутствует.

https://stackblitz.com/edit/angular-ngclass-off-props?file=src/app/app.component.ts

Комментарии:

1. Спасибо за ответ, но я удалил некоторые строки для ясности, и на самом деле свойство operation находится в интерфейсе, а не отсутствует. Есть идеи, связанные с проблемой?