假设我有A和B类.A定义B可能使用的所有东西。 A不知道,B使用时某些回调参数可能具有什么类型。所以在A中它们被定义为Object。
class A {
private _on_user_selection:(selection:Object) => void = $.noop;
set on_user_selection(fn:(selection:Object) => void) {
if ($.isFunction(fn)) {
this._on_user_selection = fn;
}
}
}
class B extends A {
// ...
}
B知道作为回调参数会发生什么。现在我需要在B中做什么,以便我可以像这样使用它:
let b = new B();
b.on_user_selection = (selection:SomeInterfaceDefindeSomewhere):void => {
// ...
};
在这种情况下,上面的工作会很好,但是我想修复B中的回调返回类型,而不仅仅是它实际调用的地方。
答案 0 :(得分:1)
您可以A
通用:
class A<T> {
private _on_user_selection: (selection: T) => void = $.noop;
set on_user_selection(fn: (selection: T) => void) {
if ($.isFunction(fn)) {
this._on_user_selection = fn;
}
}
}
class B extends A<SomeInterfaceDefindeSomewhere> {
// ...
}
此外,请勿使用Object
,instead use any
或new object
type类型。