猫鼬的loadClass()与TypeScript

时间:2019-02-16 13:31:26

标签: typescript mongoose mongoose-schema

猫鼬接受ES6 class作为架构的基础。

该链接的示例:

class PersonClass {

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

}

PersonSchema.loadClass(PersonClass);

架构的属性未在类中定义,因此TypeScript编译器会说:

  

PersonClass类型上不存在属性名字。

技巧是使用虚拟构造函数:

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

但这是黑客,而且很难维护。

还有其他方法可以做到这一点,而不会被黑客入侵吗?

1 个答案:

答案 0 :(得分:1)

技巧是使用this IPerson批注:

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

IPerson是该架构的相应接口。