用条件参数编写 CombineLatest 的优雅方式是什么?

What's the elegant way of writing CombineLatest with conditional arguments?

在非异步代码中,我执行以下操作:

    const x = [
        ...(isY ? [Y]: []),
        ...(isZ ? [Z] : [])
    ];

isYisZObservables<boolean> 并且 xObservable<Object[]>.[=16= 时,你会如何优雅地写这个结构]

我可以用各种映射来做到这一点,但没有任何东西看起来干净或优雅。

combineLatest 运算符最好在您有多个长期存在的 observables 时使用,它们相互依赖以进行某些计算或确定。 请注意 combineLatest 在每个可观察对象至少发出一个值之前不会发出初始值。

您可以查看 explanationcombineLatest

const x: Observable<any[]> = combineLatest(isY$, isZ$).pipe(
    map([isY, isZ] => {
        return [
            ...(isY ? [Y]: []),
            ...(isZ ? [Z]: [])
        ]
    })
)

编辑: 您还可以使用 combineLatest 项目函数,因此它甚至可以通过

变得更简洁
const x: Observable<any[]> = combineLatest(isY$, isZ$, (isY, isZ) => [ 
   ...(isY ? [Y]: []), 
   ...(isZ ? [Z]: []) 
])