Reputation: 103
I am a freshman with typescript. I don't understand this error in my code.
I use the IProps
to describle the props of the class. Why does the typescript check the method of this class ? How can I solve this problem?
export interface IProps extends FormComponentProps {
dispatch: Dispatch<any>;
loading: any;
}
@Form.create()
@connect(({ global, loading }) => ({ global, loading }))
export default class MessageBoard extends PureComponent<IProps> {
state = {
activated: false,
};
deactivate = () => {
this.setState({ activated: true });
};
...
render() {
...
return (...);
}
}
Upvotes: 1
Views: 988
Reputation: 30879
TypeScript requires that a class decorator not change the type of the class, and many React higher-order components that are often used as decorators in untyped JavaScript do not comply with this rule. Instead of calling connect
and Form.create
as decorators, try calling them as functions and exporting the result:
class MessageBoard extends PureComponent<IProps> { ... }
export default Form.create()(
connect(({ global, loading }) => ({ global, loading }))(
MessageBoard));
Upvotes: 4