Javascript meteor 1.10.2 typescript ValidatedMethod-this.userId

Javascript meteor 1.10.2 typescript ValidatedMethod-this.userId,javascript,typescript,meteor,Javascript,Typescript,Meteor,我正在努力使用meteor typescript和mdg:ValidatedMethod 我使用了formdg:ValidatedMethod中的@types 假设此meteor代码没有ValidateMethod: const addLink=Meteor.methods({ 'links.add'({title,url}){ 新单纯形({ 标题:{type:String}, url:{type:String} }).validate({title,url}); 如果(!this.userId

我正在努力使用meteor typescript和
mdg:ValidatedMethod

我使用了for
mdg:ValidatedMethod
中的@types

假设此meteor代码没有ValidateMethod:

const addLink=Meteor.methods({
'links.add'({title,url}){
新单纯形({
标题:{type:String},
url:{type:String}
}).validate({title,url});
如果(!this.userId){
//抛出一个错误!
}
LinksCollection.insert({
标题
网址,
createdAt:新日期(),
});
}
});
这里所有的工作都是假设的,如果(this.userId){

但是,当我现在更改为ValidatedMethod时,typescript找不到
this.userId

const addLink=新的ValidatedMethod({
名称:“links.add”,
验证:新SimpleSchema({
标题:{type:String},
url:{type:String}
}).validator(),
运行({title,url}){
如果(!this.userId){//此处typescript找不到this.userId
//抛出一个错误!
}
LinksCollection.insert({
标题
网址,
createdAt:新日期(),
});
}
});
我检查了第一个示例中的类型,并在@type定义中添加了
this
-ref-run方法,这意味着我将第17行从

run:(args:{[key:string]:any;})=>void;

run:(this:Meteor.MethodThisType,args:{[key:string]:any;})=>void;


我现在似乎在工作,但由于我对typescript世界相当陌生,我想知道,这是否是正确的方法?!

typescript允许您定义
的类型,如下所示:

function f(this: ThisType) {}
有关更多信息,请参见此处:

在这种情况下,您可以添加

this:Meteor.MethodThisType

要运行index.d.ts中的
方法签名,请执行以下操作:

run: (this: Meteor.MethodThisType, args: { [key: string]: any; }) => void;

由于ValidatedMethod定义了几个额外的参数(例如,
this.name
),因此它并不完全完整,但是如果需要,您可以添加这些参数。

@MS1对您有用吗?如果可以,请接受答案。很抱歉我的回复太晚了!非常感谢!它对我有用:)