错误TS2339:财产'电子邮件'类型'对象'上不存在

时间:2018-01-31 09:55:17

标签: angular

我使用角度5并且我收到了错误,下面是代码:

signIn(provider) {
    this._auth.login(provider).subscribe(
      (data) => {
        console.log(data);
        this.hideForm = false;

        this.emaill = data.email;
        this.nom = data.last_name;
        this.prenom = data.first_name;
        this.profileImage = data.image;
    })
}

错误是:

  

src / app / authentification / authentification.component.ts(34,28):错误TS2339:属性'电子邮件'类型'对象'上不存在。   src / app / authentification / authentification.component.ts(35,25):错误TS2339:属性' last_name'类型'对象'上不存在。   src / app / authentification / authentification.component.ts(36,28):error TS2339:Property' first_name'类型'对象'上不存在。   src / app / authentification / authentification.component.ts(37,34):错误TS2339:属性'图像'类型'对象'。

上不存在

8 个答案:

答案 0 :(得分:33)

在第3行将(data)替换为(data : any)

答案 1 :(得分:2)

最受好评的答案并不好,因为它违背了 @Alex Lomia

也提到的 Typescript 的全部目的

对此的解决方案是 -

  1. 要解决此问题,请创建一个接口来描述您的架构并扩展 mongoose.Document: 在这里检查这个类似的问题 - similar question

  2. 使用 Javascript 而不是 TypeScript ,如果有人在后端使用 NestJS 很可能会遇到这个错误,所以如果你不想经历制作接口和 DTO 的使用 javascript 的过程,也可以javascript 构建的文件也会更小。

答案 2 :(得分:0)

或更好地练习使用接口。 你可以声明界面:

export interface DataI {

 email: string;
 ...
 constructor(...){this.email = email .....}

然后将其用作类型

答案 3 :(得分:0)

发生错误,因为数据类型为Object,没有任何属性。您可以检查对象是否具有您的属性并使用它:

if (data.hasOwnProperty('email')) this.email = data['email'];

答案 4 :(得分:0)

检查对象的条件是否为空

if(data!==null && data!==undefined && data.email !==undefined)
{
    this.emaill = data.email;
    this.nom = data.last_name;
    this.prenom = data.first_name;
    this.profileImage = data.image;
}

答案 5 :(得分:0)

类型“对象”上不存在属性“主机名”。

我正在使用Vue和打字稿,在加载某些数据后尝试进行console.log this.dropdownItems [0] .hostname时,在调试时发生错误。对我来说,该错误似乎是打字稿类型检查变量:

dropdownItems: Array<Object> = []

应该是:

dropdownItems: any[] = []

源自: https://www.reddit.com/r/ionic/comments/9cxc79/property_courses_does_not_exist_on_type_object/

答案 6 :(得分:0)

我的Nodejs Typescript项目中发生了同样的错误-

代码-

app.post('/form-submit', (req, res) => {
   const errors = {};
   if (...condition) {
      errors.email = ['Email is not valid.'];
   }
});

错误-

Property 'email' does not exist on type '{}'.ts(2339)

解决方案(添加:any并解决错误)-

const errors:any = {};

答案 7 :(得分:0)

您可以使用data:any

signIn(provider) {
    this._auth.login(provider).subscribe(
      (data:any) => {
        console.log(data);
        this.hideForm = false;

        this.emaill = data.email;
        this.nom = data.last_name;
        this.prenom = data.first_name;
        this.profileImage = data.image;
    })
}

现在它可以正常工作了,因为我遇到了同样的问题。