Javascript TypeScript中的Mongoose方法范围

Javascript TypeScript中的Mongoose方法范围,javascript,node.js,callback,mongoose,typescript,Javascript,Node.js,Callback,Mongoose,Typescript,我有一个关于Mongoose方法回调函数中对象的范围的问题。 我的员工有“地址”。当您调用此“方法”时,它会在addresses模型中查找地址 Javascript: employeeSchema.methods.getAddresses = function (callback) { addressModel.find({ _id: { $in: this.addresses } }, function (err, obj) { callback(obj); }); };

我有一个关于Mongoose方法回调函数中对象的范围的问题。 我的员工有“地址”。当您调用此“方法”时,它会在addresses模型中查找地址

Javascript:

employeeSchema.methods.getAddresses = function (callback) { 
  addressModel.find({ _id: { $in: this.addresses } }, function (err, obj) {
    callback(obj);
  });
};
我希望将所有内容都键入,并且函数中的“this”范围有问题。 范围在对象本身上,但是所有示例都显示“this”。这在TypeScript中不起作用,因为它认为它是主类

打字稿:

employeeSchema.methods.getAddresses = (callback) => { 
  addressModel.find({ _id: { $in: this.addresses } }, (err, obj) => {
    callback(obj);
  });
};
我对验证也有同样的问题:

accountSchema.path('email').validate(function (email, callback) {
  if (this.isNew || this.isModified('email')) {}
}

“This”是回调作用域中的帐户,但是否有方法将对象实际传递给回调?

因为您不想捕获词典范围的
This
,所以不要使用
=>
。只需使用
功能


有一个特性请求将此的含义声明为特定类型:

为什么不将地址作为参数传入方法?(地址,回调)…然后调用方将使用“this.addresses”,我将使用function()并将其转换为类型化对象,直到那时。谢谢提示:更喜欢术语
assert
而不是
cast
,因为没有任何运行时支持