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.valueChanges
which 发出any
类型,或任何其他带有any
. 因为any
匹配SchedulerLike
,所以你会看到通知。
因此,尽量避免any
通过添加filter((v): v is number => typeof === 'number')
或任何其他可能的方式。
避免弃用通知的一种方法是对您传入的任何内容进行类型转换startWith
。例如startwith(x as boolean)
在 OP 的示例中。
这样,您就可以向 IDE 保证您没有使用已弃用的签名。
归档时间: |
|
查看次数: |
16334 次 |
最近记录: |