我在js中使用schema.virtual属性,但是现在我想在tyescript中使用它,并且得到错误。
UserSchema.virtual('fullname').get(function () { return `${this.firstName} ${this.lastName}` });
我面临这个错误
this' implicitly has type 'any' because it does not have a type annotation.
2w2cym1i1#
有一些解决方案可以解决这个特定的问题,例如declaring an interface用于键入this,但根据我的经验,这将产生其他问题(其中一个问题是doc.fullname将导致错误,因为TS不够智能,无法知道fullname已作为虚拟对象添加)。解决这个问题最简单的方法是将虚拟值作为Schema声明的一部分:
this
doc.fullname
fullname
const UserSchema = new mongoose.Schema({ firstName : String, lastName : String, ... }, { virtuals : { fullname : { get() { return `${this.firstName} ${this.lastName}`; } } } });
1条答案
按热度按时间2w2cym1i1#
有一些解决方案可以解决这个特定的问题,例如declaring an interface用于键入
this
,但根据我的经验,这将产生其他问题(其中一个问题是doc.fullname
将导致错误,因为TS不够智能,无法知道fullname
已作为虚拟对象添加)。解决这个问题最简单的方法是将虚拟值作为Schema声明的一部分: