Я довольно новичок в Typescript и у меня есть проект Angular, в котором у меня простой интерфейс:
IEmail {
email_type:string,
email_address:string
}
У меня есть простой метод, который в основном сравнивает значение двух массивов и, если он находит значение в одном массиве, равное значению в другом массиве, он склеивает это значение.
Код, который я использую для этого:
this.contact.shared.emails.map((val)=> {
this.profile.emails.indexOf(val.email_address) < -1 ? this.emailArray.splice(val, 1) : '';
});
Где 'val' имеет тип
Моя проблема в том, что в строке:
this.profile.emails.indexOf(val.email_address) < -1 ? this.emailArray.splice(val, 1) : '';
Я получаю сообщение об ошибке с: (val.email_address), поскольку это значение является строковым параметром типа интерфейса <IEmail>
.
Итак, я получаю сообщение об ошибке
'Аргумент типа string нельзя назначить параметру типа
IEmail».
Как мне решить эту проблему?
Между прочим, я заметил, что могу избавиться от этой ошибки, изменив типы параметров в моем интерфейсе на 'any' против 'string', но это вызывает новую ошибку, где 'val' в этом строка:
this.emailArray.splice(val, 1)
генерирует ошибку: Аргумент типа 'IEmail' не может быть назначен параметру типа 'number'.