重构 mapPropsToStream 打字稿

Recompose mapPropsToStream typescript

我正在尝试在 typescript 上编写组件,它将用 rxjs 实现 onChange 替换 props 中的 onChange,就像这样

        this.onChangeSubscription = this.onChange$
        .debounceTime(200)
        .filter(value => value.length !== 1)
        .distinctUntilChanged()
        .subscribe(value => this.props.onChange(value))

当我尝试使用 pluck 函数时出现错误:

属性 'pluck' 在类型 Subscribable<'Props'>

上不存在
     const Filter = mapPropsStream<Props,Props>((props$) => {    
            const a = props$.pluck('onChange');
            // newProps created
            return newProps$;
        })(Component);

导入包含

import 'rxjs/add/operator/pluck';

您正在使用 RxJS,但是 recompose 对于可观察的实现并没有自以为是 can be configured 与许多其他库一起工作。

即使配置到位,TypeScript 也会将 props$ 视为非 RxJS 类型。要解决这个问题,您可以使用特定的类型断言,或者您可以使用 RxJS from 函数:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/from';

const Filter = mapPropsStream<Props,Props>((props$) => {    
    const a = Observable.from(props$).pluck('onChange');
    // newProps created
    return newProps$;
})(Component);