类型“”上不存在 Typescript 错误属性“成员”
Posted
技术标签:
【中文标题】类型“”上不存在 Typescript 错误属性“成员”【英文标题】:Typescript Error Property 'members' does not exist on type ''类型“”上不存在 Typescript 错误属性“成员” 【发布时间】:2019-04-12 18:59:07 【问题描述】:这段代码一直运行良好,直到几天前我升级了 angularfire 和 firebase:
从"angularfire2": "5.0.0-rc.4"
,到"angularfire2": "^5.1.0"
,
从"firebase": "4.8.0"
,到"firebase": "^5.5.7"
:
this.dataProvider.getGroup(this.groupId).snapshotChanges().subscribe((group) =>
this.group = group.payload.val();
this.groupMembers = null;
// Get group members
if (group.payload.val().members)
group.payload.val().members.forEach((memberId) =>
this.dataProvider.getUser(memberId).snapshotChanges().subscribe((member) =>
this.addOrUpdateMember(member);
);
);
// Get user's contacts to add
this.dataProvider.getCurrentUser().snapshotChanges().subscribe((account) =>
if (account.payload.val().contacts)
//Delete log
console.log('My contacts',account.payload.val().contacts);
for (var i = 0; i < account.payload.val().contacts.length; i++)
this.dataProvider.getUser(account.payload.val().contacts[i]).snapshotChanges().subscribe((contact) =>
// Only contacts that are not yet a member of this group can be added.
contact = $key: contact.key, ...contact.payload.val();
//Delete log
console.log('Is contact',contact,' already added?',this.isMember(contact));
if (!this.isMember(contact))
this.addOrUpdateContact(contact);
);
if (!this.contacts)
this.contacts = [];
else
this.contacts = [];
);
this.loadingProvider.hide();
);
这是提供者中的getGroup()
:
getGroup(groupId)
return this.angularfire.object('/groups/' + groupId);
在项目中有 payload.val()
.someProperty
的任何地方都会出现此错误。
【问题讨论】:
【参考方案1】:这是我从 firebase 获取数据的方式。
firebase.database().ref('/MyCustomFolder').once("value").then(snapshot =>
let data = snapshot.val();
console.log(data.customers);
);
我建议尝试以下方法:
this.dataProvider.getGroup(this.groupId).snapshotChanges().subscribe((group) =>
let data = group.val();
let payload = data.payload;
if (payload.members)
/* do something */
【讨论】:
感谢@Dmitry 的回复。但是如果我改变然后我得到一个新的错误:Typescript错误属性'members'在类型'DatabaseSnapshot '上不存在。类型“DatabaseSnapshotExists”上不存在属性“members”。 @PaulKitatta 我想我做错了。我编辑了我的答案 它给出了新的错误:Property 'val' does not exist on type 'AngularFireAction<DatabaseSnapshot<>>'.
。但我找到了解决方案。【参考方案2】:
这是我必须做的才能让它工作:
this.dataProvider.getGroup(this.groupId).snapshotChanges().subscribe((group) =>
let data: any = group.payload.val();
if (data.members)
/* do something */
显然我必须包含: any
。同样,鉴于在我进行升级之前它正在工作 - 专家会告诉我们更多原因。
【讨论】:
以上是关于类型“”上不存在 Typescript 错误属性“成员”的主要内容,如果未能解决你的问题,请参考以下文章
类型 IInstance 上不存在 typescript 文件属性 selectpicker 中的错误
TypeScript 令人困惑的错误'对象可能是'未定义'和'类型上不存在属性'长度''
NextJS/Typescript/Apollo 错误;类型上不存在属性