Typescript抽象和最终的React Component接口类型

时间:2017-05-06 06:30:17

标签: javascript reactjs typescript

我有以下界面:

export interface ReduxState<TReduxState, TConnectedStateProps, TConnectedDispatchProps, TOwnProps> {
    connect: (
        mapStateToProps: MapStateToProps<TReduxState,TConnectedStateProps>,
        mapDispatchToProps: MapDispatchToProps<TConnectedDispatchProps>
    ) => (component: React.ComponentClass<TConnectedStateProps & TConnectedDispatchProps & TOwnProps>) => any;
}

这里重要的一点是最后一行component: React.ComponentClass

在容器中,我这样做:

// Define state here
const state: ReduxState<...> = new State...;

state.connect(
    (state)  => {
        return {

        };
    },
    (dispatch) => {
        return {

        };
    }
)(SomeComponent);

SomeComponent是最终类时,这可以正常工作,即

class SomeComponent extends React.Component<Props, State>

但是,如果我的类是抽象的,它就不起作用了:

abstract SomeComponent extends React.Component<Props, State>

我得到了

  

错误TS2345:类型'typeof SomeClass'的参数不可分配给   'ComponentClass'类型的参数。无法分配摘要   构造函数类型为非抽象构造函数类型。

如何定义component的类型,以便两者都可以?

0 个答案:

没有答案