我需要将一个带有回调的函数传递给bindCallback
rxjs 函数。但是我的函数具有泛型类型。
这是代码:
const obCreator = bindCallback<T>(FakeServer.instance.on<T>);
return obCreator(module, method);
这是第一行中的错误:
没有与此调用匹配的重载。 重载 1 的 34, '(回调函数: (回调: (res1: T( => 任何( => 任何, 调度程序?: 调度程序喜欢 | undefined(:(( => Observable',给出以下错误。 类型为"void"的参数不能分配给类型为"(回调:(res1:T(=> any(=> any"的参数。
这没有错误,但没有泛型:
const obCreator = bindCallback(FakeServer.instance.on);
return obCreator(module, method);
根据文档,bindCallback
的第一个签名是
bindCallback<T>(callbackFunc: Function, resultSelector?: Function | SchedulerLike, scheduler?: SchedulerLike): (...args: any[]) => Observable<T>
这意味着您可以将泛型类型传递给bindCallback
但作为输入传递的函数没有任何泛型。因此,您应该能够使用以下表格
const obCreator = bindCallback<T>(FakeServer.instance.on);
return obCreator(module, method); // returns an Observable<T>
没有其他接受泛型的重载,所以这似乎是唯一的选择,可能没有 根据这个堆栈闪电战,这应该有效。