如何从 rxjs 6 withLatestFrom 键入数组映射参数

Posted

技术标签:

【中文标题】如何从 rxjs 6 withLatestFrom 键入数组映射参数【英文标题】:How to type array map arguments from rxjs 6 withLatestFrom 【发布时间】:2018-11-04 05:22:57 【问题描述】:

在 Rxjs 6 之前我们可以这样做:

interface TypeA 
  payload: any;


source$.pipe(
  withLatestFrom(source2$, (source1: TypeA, source2: TypeB) => 
       ( payload: source1.payload, source2 ) ),
)

我们可以在 resultSelector 方法参数中为 source1source2 添加适当的类型,并在此处在构造对象中传递。

但现在我们必须做到以下几点:

source$.pipe(
  withLatestFrom(source2$),
  map(([source1, source2]) => ( source1, source2 ) ),
)

这样做我们无法在数组参数中的 source1 和 source2 上添加类型。然后输入会丢失,例如 IDE 不会在 source1 上建议 .payload

如何使用新语法添加正确的数组参数类型?

【问题讨论】:

【参考方案1】:

您可以像添加元组一样添加它:

source$.pipe(
  withLatestFrom(source2$),
  map(([source1, source2]: [TypeA, TypeB]) => ( source1, source2 ) ),
)

虽然我很惊讶你没有在上面自动输入,但我认为它确实传播了它们......

【讨论】:

您感到惊讶是对的。这些类型确实为我传播,OP 必须有其他事情发生。看看那是什么会很有趣。 它们在某些情况下不会传播(例如在某些特定情况下使用 Angular ngrx)

以上是关于如何从 rxjs 6 withLatestFrom 键入数组映射参数的主要内容,如果未能解决你的问题,请参考以下文章

[RxJS] Reactive Programming - Using cached network data with RxJS -- withLatestFrom()

RxJs操作符,其行为类似于withLatestFrom,但会等待第二个流的值。

#私藏项目实操分享# RxJs 操作符 withLatestFrom 在 SAP 电商云 Spartacus UI 中的应用

RxJS Observable Share startWith() state in merge()

将参数传递给 withLatestFrom 函数

为啥我使用有效的 withLatestFrom 操作从选择器获取具有动作观察者属性的对象?