【问题标题】:rxjs6 partition method: Argument of type 'UnaryFunction' is not assignable to parameter of type 'OperatorFunction'rxjs6 分区方法:“UnaryFunction”类型的参数不可分配给“OperatorFunction”类型的参数
【发布时间】:2018-12-30 10:57:57
【问题描述】:

使用 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, Observable]”中缺少属性“_isScalar”。

这里是 stackblitz 网址: https://stackblitz.com/edit/rxjs6-learn

【问题讨论】:

标签: rxjs6


【解决方案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 中显示的错误

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    相关资源
    最近更新 更多