gpt4 book ai didi

javascript - RxJS 的可出租运算符会破坏通用类型吗?

转载 作者:行者123 更新时间:2023-12-01 02:24:23 25 4
gpt4 key购买 nike

我有一个基本的 Angular HttpIntereceptor返回 Observable<HttpEvent<any>>

intercept(req: HttpRequest<any>, next: HttpHandler) : Observable<HttpEvent<any>>
{
return next.handle(req);
}

这工作正常。

我想添加一个副作用函数,所以我使用了 .do运算符:

 return  next.handle(req).do(f=> ()=>{/*.somethinbg.*/});

这也有效。

但现在我想使用可出租运算符 tap这是 do 的替代品.

所以我这样做了:

 log =  tap(x =>{}, x =>{});

但是现在,当我“让”它时,我收到一个错误:

enter image description here

问题:

如何使用这个可出租运算符并仍然保留泛型/类型?

ONLINE DEMO

更新:

如果我这样做:

  return  next.handle(req).let( tap(x =>{}, x =>{}));

然后它就可以工作了。只有当函数位于外部时,才会出错。

最佳答案

这里的问题是,当定义自定义运算符时,无法推断出您想要在 pipe(或 let)中使用的类型。

您可以通过使用更通用的定义来绕过此限制。

const log = <T>() => tap<T>(x => { });

我还 fork 了您的演示来展示这一点。 DEMO

关于javascript - RxJS 的可出租运算符会破坏通用类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48929542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com