Angular 错误TS2339:属性';电子邮件';不存在于类型';对象';
我用的是angular 5,我有个错误,代码如下:Angular 错误TS2339:属性';电子邮件';不存在于类型';对象';,angular,Angular,我用的是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.p
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/authentication/authentication.component.ts(34,28):错误TS2339:类型“Object”上不存在属性“email”。
src/app/authentication/authentication.component.ts(35,25):错误TS2339:类型“Object”上不存在属性“last\u name”。
src/app/authentication/authentication.component.ts(36,28):错误TS2339:类型“Object”上不存在属性“first\u name”。
src/app/authentication/authentication.component.ts(37,34):错误TS2339:类型“Object”上不存在属性“image”
将第三行的
(数据)
替换为(数据:任意)
。或更好地使用接口。
您可以声明接口:
export interface DataI {
email: string;
...
constructor(...){this.email = email .....}
然后将其用作类型发生错误的原因是数据的类型对象没有您的属性。您可以检查对象是否具有您的属性并使用它:
if (data.hasOwnProperty('email')) this.email = data['email'];
检查对象的条件是否为空
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;
}
我个人遇到了这个问题。原代码为:
if (response.data !== 'undefined') {
// ...
}
应该是:
if (response["data"] !== 'undefined') {
// ...
}
类型“Object”上不存在属性“hostname” 我正在使用Vue和typescript,尝试控制台时调试时出错。记录此错误。dropdownItems[0]。在中加载一些数据后,主机名。对于我来说,错误似乎是对变量声明的typescript类型检查:
dropdownItems: Array<Object> = []
源自:
在我的
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)
解决方案(添加:任何
和错误解决方案)-
您可以使用
数据:任意
:
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;
})
}
现在它可以正常工作了,因为我也遇到了同样的问题。投票最多的答案并不好,因为它违背了Typescript的全部目的,Alex Lomia也提到了这一点 解决这个问题的方法是-
mongoose的接口。文档:
请在此勾选类似问题-
谢谢,但它给了我另一个错误:ts(40,3):错误TS1005:','预期。我的意思是在最后一个}中,函数没有任何错误。检查整个文件中是否存在其他可能的语法错误。请注意:当添加
:any
时,请确保将整个内容括在括号中。例如,当您要将数据
强制转换为任意时,请使用(数据:任意)
。另一个示例是,如果要将结果
强制转换为任何
,则为:(结果:任何)
。确保使用()
,否则您将面临TSLint错误。希望这对其他人有所帮助。这不是一个好的解决方案,指定any
只会关闭类型检查,从而破坏了Typescript的全部功能。
const errors: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;
})
}