所以我有以下代码
let someValue = Observable.of([{'id': 1}, {'id': 2}, {'id': 3}, undefined, undefined]);
所以现在,如果我想过滤未定义的值,我要么
someValue.filter(val => !!val) OR
someValue.filter(val => val !== undefined)
在TS中,.filter方法返回typeof Any,因此过滤方法可以像一样工作
let someValue = [{'id': 1}, {'id': 2}, {'id': 3}, undefined, undefined];
someValue.filter(val => val)
这将过滤任何未定义的对象,所以我想知道为什么RxJS谓词中的.filter是boolean而不是任何?
答案 0 :(得分:0)
RxJS可能在filter()
的定义中严格打字。
- @param {function(value:T,index:number): boolean }谓词A 函数*评估源发出的每个值 观察到。如果它返回
开始true
,*会发出值,如果false
该值不会传递给输出* Observable。index
参数是第i个源*发射的数量i
自订阅以来发生,从数字*0
。
你仍然可以做到
someValue.filter(Boolean)
将过滤掉 falsy 值,其效果与
相同someValue.filter(x => x)