Есть ли способ использовать PropTypes вместе с TypeScript - PullRequest
0 голосов
/ 21 апреля 2020

Я переношу свой проект React в TS и в компонент (я удалил большинство реквизитов для упрощения кода):

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);

В последней строке появляется ошибка:

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

И когда я удаляю PropTypes использование, эта ошибка исчезает. Итак, что я могу сделать, чтобы TS и PropTypes работали вместе?

PS. Я действительно хочу продолжать использовать PropTypes, потому что он может обнаруживать ошибки во время выполнения

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Я думаю, что должен быть конфликт между тем, как вы указываете типы в proptype и typcript в вашем коде.

0 голосов
/ 21 апреля 2020

Вам не нужно PropType, если вы уже используете TyprScript с React.

Это избыточно, если вы действительно не доверяете своей проверке во время выполнения.

PropTypes в приложении TypeScript React

...