rxjs6 分区方法:“UnaryFunction”类型的参数不可分配给“OperatorFunction”类型的参数

Wan*_*ker 3 rxjs6

使用 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);
});
Run Code Online (Sandbox Code Playgroud)

该代码工作正常,并以奇数和偶数分隔输入。但是VSCode和StackBlitz在partition调用方法的那一行报错:

“UnaryFunction, [Observable, Observable]>”类型的参数不可分配给“OperatorFunction”类型的参数。类型 '[Observable, Observable]' 不可分配给类型 'Observable'。类型“[Observable, Observable]”中缺少属性“_isScalar”。

这是stackblitz URL:https ://stackblitz.com/edit/rxjs6-learn

Wan*_*ker 5

根据@cartant发表的评论和链接的Github 问题,正确的调用语法partition如下:

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

这将消除 IDE 中显示的错误