如何在打字稿中使用rxjs6分区?

fas*_*.de 6 rxjs typescript rxjs6

当我尝试partition在打字稿中使用rxjs6时,会抛出类型错配.此外,官方文档中的示例抛出了该错误.我想我必须投一些东西,但我不知道是什么.有什么建议?

import {fromEvent} from 'rxjs';
import {partition} from 'rxjs/operators';

document.body.innerHTML = "<DIV width=100 height=100></DIV>"


//Example Code from https://rxjs-dev.firebaseapp.com/api/operators/partition
const clicks = fromEvent(document, 'click');
const parts = clicks.pipe(partition(ev => ev.target.tagName === 'DIV'));
const clicksOnDivs = parts[0];
const clicksElsewhere = parts[1];
clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));
clicksElsewhere.subscribe(x => console.log('Other clicked: ', x)); 
Run Code Online (Sandbox Code Playgroud)

错误:

类型'UnaryFunction,[Observable,Observable]>'的参数不能分配给'OperatorFunction'类型的参数.类型'[Observable,Observable]'不能分配给'Observable'类型.类型'[Observable,Observable]'中缺少属性'_isScalar'.

请参阅https://stackblitz.com/edit/typescript-fdqhws

Way*_*rer 14

对于分型pipe目前没有足够的灵活性,以支持partition作为pipeable运营商,并为文件partition是不是非常有帮助,在写作的时候: https://github.com/ReactiveX/rxjs/issues/2995

我相信有人要求它在RxJS7中成为一个静态函数:https: //github.com/ReactiveX/rxjs/issues/3797

作为解决方法,试试这个:

const clicks = fromEvent(document, 'click');
const parts = partition(ev => ev.target.tagName === 'DIV')(clicks);
Run Code Online (Sandbox Code Playgroud)