Метод разделения rxjs6: аргумент типа UnaryFunction не может быть назначен параметру типа OperatorFunction

При использовании Rxjs 6 IDE сообщает об ошибке при использовании метода partition, даже если функция работает нормально.

Например: у меня есть пример кода:

import { of } from 'rxjs';
import { filter, partition } from 'rxjs/operators';

let obs = of(1,2,3,4,6,9,111,13,10,12);

let [a, b] = obs.pipe(
  filter(v => v > 3),
  partition(p => p % 2 == 0)
);

a.subscribe(v => {
  console.log(v);
});

b.subscribe(v => {
  console.log(v);
});

Код работает нормально и разделяет входные данные на нечетные и четные числа. Однако VSCode и StackBlitz сообщают об ошибке в строке, где вызывается метод partition:

Аргумент типа UnaryFunction, [Observable, Observable]> не может быть назначен параметру типа OperatorFunction. Тип «[Observable, Observable]» нельзя присвоить типу «Observable». Свойство _isScalar отсутствует в типе [Observable, Observable].

Вот URL-адрес stackblitz: https://stackblitz.com/edit/rxjs6-learn


person Wand Maker    schedule 23.07.2018    source источник
comment
См. Эту проблему и связанные с ней проблемы: github.com/ReactiveX/rxjs/issues/3807   -  person cartant    schedule 23.07.2018


Ответы (1)


На основе комментария, опубликованного @cartant, и связанного Github issue, правильный синтаксис для вызова partition следующий:

const source = from([1, 2, 3, 4, 5, 6])
const [evens, odds] = partition((val: any) => val % 2 === 0)(source)

Это удаляет ошибку, отображаемую в IDE.

person Community    schedule 23.07.2018