1

我正在尝试在打字稿上编写组件,它将用 rxjs 实现 onChange 替换来自 props 的 onChange,就像这样

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

当我尝试使用 pluck 功能时出现错误:

Subscribable<'Props'> 类型上不存在属性“pluck”

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

导入包含

import 'rxjs/add/operator/pluck';
4

1 回答 1

2

您正在使用 RxJS,但recompose对可观察的实现没有意见,并且可以配置为与许多其他库一起使用。

即使有了这个配置,TypeScript 也会props$被视为非 RxJS 类型。为了解决这个问题,你可以使用特定的类型断言或者你可以使用 RxJSfrom函数:

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);
于 2018-05-07T08:21:13.663 回答