如何将泛型类型的方法发送到 RXJS 绑定回调?



我需要将一个带有回调的函数传递给bindCallbackrxjs 函数。但是我的函数具有泛型类型。

这是代码:

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>

没有其他接受泛型的重载,所以这似乎是唯一的选择,可能没有 根据这个堆栈闪电战,这应该有效。

最新更新