1

I'm migrating my React project to TS and in component (I deleted most of props to simplify code):

interface Props {
  activeTabIdx: number;
  setActiveTab: Function;
}

const HeaderTabs = ({ activeTabIdx, setActiveTab}: Props) => {
  ...
};

HeaderTabs.propTypes = {
  activeTabIdx: PropTypes.number.isRequired,
  setActiveTab: PropTypes.func.isRequired,
};


const mapStateToProps = (state) => ({
  activeTabIdx: state.tabs.activeValue,
});

const mapDispatchToProps = {
  setActiveTab: _setActiveTab,
};

export default connect(mapStateToProps, mapDispatchToProps)(HeaderTabs);

On last line appears error:

Argument of type '{ ({ visible, className, activeTabIdx, setActiveTab, values }: Props): JSX.Element | null; propTypes: { values: PropTypes.Validator<any[]>; activeTabIdx: PropTypes.Validator<number>; setActiveTab: PropTypes.Validator<...>; visible: PropTypes.Validator<...>; className: PropTypes.Requireable<...>; }; defaultProps: { ....' is not assignable to parameter of type 'ComponentType<never>'.

And when I delete PropTypes usage this error disappeares. So what can I do to make TS and PropTypes work together?

PS. I really want to remain usage of PropTypes because it can detect errors in runtime

Kostya Tresko
  • 754
  • 1
  • 5
  • 24

1 Answers1

0

I think there must be a conflict between how you specify types in proptype and typescript in your code.

Algo7
  • 2,122
  • 1
  • 8
  • 19