Расширение типа не добавляет всех его свойств и функций - PullRequest
0 голосов
/ 31 января 2019

Я расширяю класс мангуста 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.Так почему этот код не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...