Почему предикат .filter возвращает логическое значение, а не любое? - PullRequest
0 голосов
/ 18 мая 2018

Итак, у меня есть следующий код

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)

, и он будет фильтровать любые неопределенные объекты, поэтому мне было интересно, почему .filter в предикате RxJS является логическим, а не любым?

1 Ответ

0 голосов
/ 18 мая 2018

RxJS, вероятно, имеет строгую типизацию в определении filter().

  • @ param {function (value: T, index: number): boolean } Предикат Функция, * оценивающая каждое значение, испускаемое исходной наблюдаемой.Если возвращается true, * значение выдается, если false значение не передается на выход * Observable.Параметр index - это число i для излучения i-го источника *, которое произошло после подписки, начиная с номера * 0.

, которое вы все еще можетеdo

someValue.filter(Boolean)

, который отфильтрует ложные значения, которые имеют тот же эффект, что и

someValue.filter(x => x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...