自从更新到RXJS版本6以来,我的WebStorm编辑器一直在提示startWith()的某些用法,该操作符被标记为已弃用。

您可以在源代码中看到这些方法被标记为已弃用:

  • Link to master(Harder link for future)

  • 对我来说,问题是不建议使用的警告不一致。有时它报告不推荐使用的方法,而其他时候则不报告。虽然我可以在以下代码示例中重现警告。这似乎是在我自己的源代码中随机发生的。

    不推荐使用:
      of(false).pipe(startWith(true));
    

    标记为已弃用:
      const x: any = true;
      of(false).pipe(startWith(x));
    

    因此,我担心这些已过时的警告。弃用消息说改为使用scheduled()concat()运算符,但是对于像startWith()这样已经很方便的运算符,这感觉像是一个更复杂的选择。

    因此,我对于为什么不推荐使用它感到困惑,但是为什么有时只推荐不推荐使用它。

    最佳答案

    不它不是。
    当前只有一个 Activity 签名:startWith(...values)
    除此签名外,它还有几个重载,它们将scheduler: SchedulerLike作为最新参数:startWith(...values, scheduler),并且不赞成使用此功能。
    如果您不将schedulerstartWith一起使用,则可以。
    如果这样做,则需要使用scheduled函数重写代码,就像他们在折旧注释旁边的注释中建议的那样:scheduled([[a, b, c], source], scheduler).pipe(concatAll())

    很可能您正在使用startWith(null)startWith(undefined),尽管有此通知,但它们并未被弃用,但是IDE检测到错误的函数签名(已弃用)并显示警告。
    或者,您正在使用formControl.valueChanges发出any类型,或者使用其他任何可观察到的any流。因为anySchedulerLike相匹配,所以您会看到通知。
    因此,请尝试通过添加any或任何其他可能的方法来避免filter((v): v is number => typeof === 'number')

    09-17 02:39