Mongoose 的 loadClass() 和 TypeScript
Posted
技术标签:
【中文标题】Mongoose 的 loadClass() 和 TypeScript【英文标题】:Mongoose's loadClass() with TypeScript 【发布时间】:2019-07-10 10:31:36 【问题描述】:Mongoose 接受 ES6 class 作为架构的基础。
该链接中的示例:
class PersonClass
get fullName()
return `$this.firstName $this.lastName`; // compiler error
PersonSchema.loadClass(PersonClass);
类中没有定义模式的属性,所以 TypeScript 编译器说:
PersonClass 类型上不存在属性 firstName。
一个技巧是使用一个虚拟构造函数:
constructor(readonly firstName: string, readonly lastName: string)
但这是 hack,更难维护。
有没有其他方法可以做到这一点,没有黑客?
【问题讨论】:
【参考方案1】:诀窍是使用this IPerson
注解:
get fullName(this IPerson)
return `$this.firstName $this.lastName`;
其中IPerson
是该架构的对应接口。
【讨论】:
使用我的 Typescript 3.4.5 版,我必须使用this: IPerson
而不是 this IPerson
。以上是关于Mongoose 的 loadClass() 和 TypeScript的主要内容,如果未能解决你的问题,请参考以下文章
ClassLoader.loadClass和Class.forName的区别
ClassLoader.loadClass和Class.forName的区别
Class.forName(),classloader.loadclass的区别
ClassLoader.loadClass和Class.forName的区别