我正在用我自己的新类Document
扩展猫鼬ThreadDoc
类。我正在向班级添加其他字段,但是想保留Document
的字段,这就是我要扩展它的原因。当我尝试创建猫鼬模式对象时,我的通用错误出现了:
类型ThreadDoc不满足约束Document。 ThreadDoc缺少以下属性
,然后继续列出诸如increment
,model
,isDeleted
之类的东西。当我查看Model
的约束时,它将寻找{{1 }},所以我不明白问题是什么。
我尝试通过尝试创建一个接口来切换创建类的方式,这对我来说是行不通的,因为我稍后需要在测试中实例化此类型,并使用新字段扩展接口,但是无法消除错误。
T extends Document
我在// This is my current attempt at the class
export class ThreadDoc extends Document{
threadTitle: String;
threadBody: String;
points: Number;
bounty: Decimal128;
createdBy: String;
createdOn: Date;
lastModifiedBy: String;
lastModifiedOn: Date;
constructor(
threadTitle: String,
threadBody: String,
points: Number,
bounty: Decimal128,
createdBy: String,
createdOn: Date,
lastModifiedBy: String,
lastModifiedOn: Date
) {
super();
this.threadTitle = threadTitle;
this.threadBody = threadBody;
this.points = points;
this.bounty = bounty;
this.createdBy = createdBy;
this.createdOn = createdOn;
this.lastModifiedBy = lastModifiedBy;
this.lastModifiedOn = lastModifiedOn;
}
}
// then I call it like this
export const Thread: Model<ThreadDoc> = model<ThreadDoc>(
"Thread",
ThreadSchema
);
的两个引用上都收到错误。这使我感到困惑,因为如果我扩展ThreadDoc
并不一定继承Document
的属性和功能?猫鼬为什么不认识这一点?从最初的错误中,我认为它仅采用Document
作为泛型类型。但这不是真的,它需要扩展Document
的所有内容。那么为什么这段代码不起作用?