Rea*_*lar 38 javascript rxjs typescript
自从更新到 RXJS 版本 6 以来,我的 WebStorm 编辑器一直在抱怨startWith() 的某些用法,即运算符被标记为deprecated。
您可以在源代码中看到这些方法被标记为已弃用:
对我来说的问题是弃用的警告不一致。有时它会报告不推荐使用的方法,有时则不会。虽然我可以在下面的代码示例中重现警告。它似乎随机发生在我自己的源代码中。
不弃用:
of(false).pipe(startWith(true));
Run Code Online (Sandbox Code Playgroud)
被标记为弃用:
const x: any = true;
of(false).pipe(startWith(x));
Run Code Online (Sandbox Code Playgroud)
所以我担心这些已弃用的警告。弃用消息说要使用scheduled()andconcat()运算符,但这感觉像是startWith().
所以我有点困惑为什么它被弃用,但为什么它有时只被弃用。
sat*_*ime 40
不它不是。
目前只有一个活动签名:startWith(...values)
除了这个签名之外,它还有几个重载可以scheduler: SchedulerLike作为最新的参数:startWith(...values, scheduler)并且这个功能已经被弃用了。
如果你不scheduler和startWith你一起使用就好了。
如果你这样做,那么你就需要使用重写代码scheduled的功能,就像他们在折旧注释旁的意见建议:scheduled([[a, b, c], source], scheduler).pipe(concatAll())。
很有可能,您正在使用startWith(null)or startWith(undefined),尽管有通知,但它们并未被弃用,但 IDE 检测到错误的函数签名,该签名已被弃用,并显示警告。
或者,您正在使用formControl.valueChangeswhich 发出any类型,或任何其他带有any. 因为any匹配SchedulerLike,所以你会看到通知。
因此,尽量避免any通过添加filter((v): v is number => typeof === 'number')或任何其他可能的方式。
避免弃用通知的一种方法是对您传入的任何内容进行类型转换startWith。例如startwith(x as boolean)在 OP 的示例中。
这样,您就可以向 IDE 保证您没有使用已弃用的签名。
| 归档时间: |
|
| 查看次数: |
16334 次 |
| 最近记录: |