首页 > 解决方案 > 参数不可分配给我的界面类型

问题描述

我对 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>接口类型的字符串参数。

所以我得到了错误

'字符串类型的参数不能分配给 IEmail 的参数类型'。

我该如何解决这个问题???

顺便说一句,我确实注意到我可以通过将界面中的参数类型更改为“any”与“string”来消除该错误,但这会带来一个新错误,其中“val”在这一行:

this.emailArray.splice(val, 1)

生成错误:“IEmail”类型的参数不可分配给“数字”类型的参数。

标签: angulartypescripttypescript-typings

解决方案


这是解决方案:

          this.profile.emails = this.profile.emails.filter(e=>{
            return this.contact.shared.emails.find(e1 => e1.email_address===e.email_address) == null
          })

推荐阅读