developit/unistore

Type check error in Class based component

praburangki opened this issue · 1 comments

This might be a basic Typescript question but I'm not sure.

I have a container component that is declared like this:

class Container extends Component<any> {
// something
}

const mapStateToProps = ({ search }, { fieldType }) => ({
  fieldSelected: search[fieldType],
});

const mapActionToProps = {
  setSearchField: searchActions().setField,
};

export default connect(
  mapStateToProps,
  mapActionToProps
)(Container);

If I import it with extra props like this:
<Container options={options} fieldType={fieldType} />
It throws a type error. I've noticed that changing to this works:
connect<{}, {}, {}, {}>

When using this format:
const Container: ComponentClass = class extends Component<any>
the type error occurred here:

export default connect(
  mapStateToProps,
  mapActionToProps
)(Container) // <--

Feel free to close this if it is not related.

I don't think we have a way to infer the types of mapStateToProps and mapActionToProps automatically, so you have to type them and use connect<ContainerProps, ContainerState, StoreState, InjectedProps>.