马邦德
马邦德

Reputation: 103

How to describe the method in a React component with interface of TypeScript?

I am a freshman with typescript. I don't understand this error in my code. enter image description here

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

Answers (1)

Matt McCutchen
Matt McCutchen

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

Related Questions