MyTemplate 解决方案
为用户提供两个界面。他可以用来将新模板添加到Template
. 另一个允许他指定模板的功能:
interface ITemplate{
}
interface ITemplateStatic{
events:Function;
}
declare var Template:ITemplate;
// the user's code:
interface ITemplate{
myTemplate:ITemplateStatic;
}
Template.myTemplate.events({});
这个解决方案
回答你关于this
. 这样做的唯一方法是将签名公开为接口。然后,打字稿用户有责任在需要时获取正确的类型。无法隐式指定this
函数内部的类型。
declare module meteor{
interface IMethod{
// A simple sample
isSimulation:boolean;
}
}
declare var Meteor;
// the user experience
Meteor.methods({
foo: function (arg1, arg2) {
var item:meteor.IMethod = this;
console.log(item.isSimulation); // now the signature is enforced
return "some return value";
}
});
当然,我将命名约定留给你:)