#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
oruserObj.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 = [];