Я использую React с TypeScript. Я также использую PropTypes. TypeScript предназначен для проверки типов времени компиляции, в то время как PropTypes проверяет переданные реквизиты во время выполнения (режим разработки). Таким образом, я обнаружил, что пишу типы дважды. Оба TypeScript и PropTypes. Например, компонент ListingsList:
interface ListingsListProps {
listings: Listing[];
height: number;
width: number;
rowHeight: number;
forwardedRef?: Ref<List>;
className?: string;
}
const ListingsList: FunctionComponent<ListingsListProps> = props => {
...
...
};
ListingsList.propTypes = {
listings: PropTypes.arrayOf(listingPropType.isRequired).isRequired,
height: PropTypes.number.isRequired,
width: PropTypes.number.isRequired,
rowHeight: PropTypes.number.isRequired,
forwardedRef: PropTypes.shape({ current: PropTypes.instanceOf(List).isRequired }),
className: PropTypes.string,
};
Каждый раз, когда я допускаю ошибку (определяя свойство по-разному в PropTypes и в TypeScript), я получаю ошибку машинописного текста. Иногда я действительно не знаю, как определить PropType. Например, при передаче свойства History из 'history'. Я не хочу определять History PropType самостоятельно, потому что он имеет сложную форму. Я видел, что есть проекты, которые генерируют TypeScript из PropTypes, но мне действительно это не нравится, потому что TypeScript намного сильнее, я могу определять более подробные типы. Я ищу способ создания PropTypes из TypeScript, и я считаю, что это обязательная функция для разработчиков React.