【发布时间】:2019-11-22 03:47:57
【问题描述】:
我正在尝试使用 rxjs 过滤可观察的数字数组。但是,作为类型提示,TypeScript 告诉我过滤器运算符得到一个number[] 数组,而不是number,我认为这是不正确的。根据the docs,rxjs 过滤运算符谓词应该接受一个项目,而不是它们的数组。这是 TypeScript 类型中的错误,还是我下面的示例中有错误?
【问题讨论】:
标签: typescript rxjs
我正在尝试使用 rxjs 过滤可观察的数字数组。但是,作为类型提示,TypeScript 告诉我过滤器运算符得到一个number[] 数组,而不是number,我认为这是不正确的。根据the docs,rxjs 过滤运算符谓词应该接受一个项目,而不是它们的数组。这是 TypeScript 类型中的错误,还是我下面的示例中有错误?
【问题讨论】:
标签: typescript rxjs
filter() 运算符在这里是正确的。问题是因为您将数组传递给of(),这将创建Observable<number[]>,或者您需要使用from(),这将创建Observable<number>。
因此更新的示例将是:
from([1, 2, 3, 4, 5]).pipe(filter(x => x > 3)).subscribe(x => console.log(x));
这将打印:
4
5
【讨论】:
如果您想过滤数组,我建议:
of([1,2,3,4,5]).pipe(map(array => array.filter(element => element < 3)))
【讨论】: