属性'name'在类型"未知"上不存在。ts(2339)



我正在尝试返回一个带有name属性的新对象。但它一直给我这个错误,代码编译没有任何问题。我正在使用Angular 9AnfularFirestore来访问Firebase

this.db
.collection('availableExercises')
.snapshotChanges()
.pipe(
map(docArray => {
return docArray.map(doc => {
return {
id: doc.payload.doc.id,
name: doc.payload.doc.data().name,
duration: doc.payload.doc.data().duration,
calories: doc.payload.doc.data().calories
};
});
})
).subscribe((exercises: Exercise[]) => {
this.availableExercises = exercises;
this.exercisesChanged.next([...this.availableExercises]);
});

这是我用于锻炼的界面

export interface Exercise{
id: string;
name: string;
duration: number;
calories: number;
date?: Date;
state?: 'completed' | 'cancelled' | null;
}

很可能是TS Lint错误。一种解决方法是使用方括号而不是点运算符来访问属性。尝试以下操作

return docArray.map(doc => {
return ({
id: doc.payload.doc['id'],
name: doc.payload.doc.data()['name'],
duration: doc.payload.doc.data()['duration'],
calories: doc.payload.doc.data()['calories']
});
});

如果仍然收到错误,请尝试替换访问链中的点运算符。

尽管如此,无论此错误如何,生成的 JS 都应该有效。

最新更新