unistore icon indicating copy to clipboard operation
unistore copied to clipboard

Type check error in Class based component

Open praburangki opened this issue 6 years ago • 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.

praburangki avatar Feb 16 '19 13:02 praburangki

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>.

developit avatar Mar 01 '19 18:03 developit