Javascript meteor 1.10.2 typescript ValidatedMethod-this.userId
我正在努力使用meteor typescript和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
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){
//抛出一个错误!
}
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对您有用吗?如果可以,请接受答案。很抱歉我的回复太晚了!非常感谢!它对我有用:)