【发布时间】:2017-08-13 03:24:18
【问题描述】:
目标
我有一个带有两个参数的私有函数:
export interface XhrHelperFunction extends Function {
(cb ?: Function, lock ?: boolean) : any;
}
...我有一个公共函数的接口,允许用户调用该私有函数:
export interface Actionable {
run(cb : Function, lock?: boolean) : void;
}
这种格式的问题是每次更新XhrHelperFunction的接口,我都要相应地更新我的Actionable接口的格式。因此,我更愿意重写Actionable,类似于:run(/* Parameters of XhrHelperFunction */) : void;
尝试
我尝试了以下格式:
export interface Actionable {
run(XhrHelperFunction) : void;
}
这在类中编写run 方法签名时有效,但在将参数传递到类实例时不起作用,即。 actionable.run(cb, lock) 因为显然参数不符合 function run(XhrHelperFunction) : void 的签名。我也不能将它们括在括号中并将它们转换为XhrHelperFunction。
你有什么建议?
【问题讨论】:
标签: oop generics inheritance typescript interface