LoadClass () Мангуста с TypeScript - PullRequest
       8

LoadClass () Мангуста с TypeScript

0 голосов
/ 16 февраля 2019

Mongoose принимает класс ES6 в качестве основы для схемы.

Пример по этой ссылке:

class PersonClass {

  get fullName() {
    return `${this.firstName} ${this.lastName}`;    // compiler error
  }

}

PersonSchema.loadClass(PersonClass);

Свойства схемы не определены вкласс, поэтому компилятор TypeScript говорит:

Свойство firstName не существует для типа PersonClass.

Хак - использовать фиктивный конструктор:

constructor(readonly firstName: string, readonly lastName: string) { }

Тем не менее, это хак, и его сложнее поддерживать.

Есть ли другой способ сделать это без хаков?

1 Ответ

0 голосов
/ 16 февраля 2019

Хитрость заключается в использовании аннотации this IPerson:

get fullName(this IPerson) {
    return `${this.firstName} ${this.lastName}`;
}

Где IPerson - соответствующий интерфейс для этой схемы.

...