аргумент типа ‘any’ не может быть присвоен параметру типа ‘never’ typescript решение

#javascript #arrays #angular #typescript

#javascript #массивы #угловой #typescript

Вопрос:

Я получаю сообщение об ошибке здесь для newUser this.userObj.assigned_to.push(newUser); как argument of type 'any' is not assignable to parameter of type 'never' typescript solution

Как мне объявить newUser, чтобы избавиться от ошибки?

Спасибо за вашу помощь.

 addSubData(user: any) {
    let i: any;
    i = document.querySelectorAll('input[type="checkbox"]:checked');
    for(var checked of i) {
      const newUser = Object.assign({}, user)
      newUser.dl = checked.value;
      newUser.sub_impact = "Applicable";
      newUser.co_score = "Added";
      this.userObj.assigned_to.push(newUser);
    }
    this.commonService.updateUser(this.userObj).subscribe(()=> {
      this.getLatestUser();
    });
  }
 

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

1. Похоже, что существует несовместимость с определением userObj or userObj.assigned_to . Не могли бы вы включить код, в котором вы определяете интерфейс и инициализируете код?

2. @PMO1948 пожалуйста, обратитесь к этому URL: stackblitz.com/edit/angular-ivy-8j9ez9?file=src/app /…

Ответ №1:

Проблема

Похоже, что ваш код не определяет достаточное количество типов, поэтому довольно сложно предоставить вам лучший способ исправить (очевидно, лучший способ — заполнить тип для вещей, которые вы определили, таких как члены класса).

В любом случае ошибка здесь заключается в том, что каким-то образом массиву assigned_to должен быть передан never тип в качестве каждого типа элемента, но теперь вы передаете any тип.

Временное исправление

Вы можете преобразовать newUser any тип в never тип, чтобы устранить проблему:

 this.userObj.assigned_to.push(newUser as never);
 

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

1. Я получаю так много мест: (Свойство не существует для типа ‘never’.

Ответ №2:

Изменить

 assigned_to: [];
 

Для

 assigned_to = [];