Я расширяю класс мангуста Document
своим собственным новым классом ThreadDoc
.Я добавляю дополнительные поля в свой класс, но хотел бы оставить поля Document
, поэтому я его расширяю.Когда я пытаюсь создать объект схемы mongoose, я получаю сообщение об ошибке, которое:
Тип ThreadDoc не удовлетворяет ограничению Document.В ThreadDoc отсутствуют следующие свойства
, а затем перечисляются некоторые из них, например increment
, model
, isDeleted
и т. Д. Когда я смотрю на ограничение для Model
, оно выглядитдля 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
.Но это не правда, требуется что-то, что расширяет Document
.Так почему этот код не работает?