我有以下界面:
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
的类型,以便两者都可以?