这是我想要做的一个简单示例
// class for acl will be every time some other class for example "UsersACL", etc....
export class EventsACL{
test() : {read: true, write: true}
{
}
}
// this one is used as a decorator for other methods
function ACL(obj : {
aclClass : any,
wantedProprties : aclClass.test
});
// call it
ACL({acl : EventsACL, {read: true, write: false});
这意味着如果我更改了EventsACL测试函数,它应该动态更改wantedProperties中的请求值。 请不要使用预定义的界面,因为我希望它对每个班级都是动态的。
答案 0 :(得分:0)
你可以这样做。我们得到返回类型var dummy = (false as true) && EventsACL.prototype.test();
的部分稍微有点hackish但是在运行时不会调用该方法。你可以在TypeScript playground:
var dummy = false && EventsACL.prototype.test();
有效,因为TypeScript类型检查器认为函数已经过计算,但它在JavaScript中仅被转换为export class EventsACL {
test(): {
read: boolean,
write: boolean
} {
return {
read: true, write: false
}
}
}
// `aclObj` here can be any typed object with a `test` method. Can be EventsACL or UsersACLinstance
var dummy = (false as true) && aclObj.test();
type ReturnType = typeof dummy;
function ACL(obj: {
aclClass: any,
wantedProprties: ReturnType
}) {
}
ACL({
aclClass: EventsACL,
wantedProprties: {
read: true,
write: false
}
});
,因此不会在运行时调用它。
windowClosing(...)