Имеет ли React.PropTypes
смысл использование в приложении TypeScript React или это просто «пояс и подтяжки»?
Поскольку класс компонента объявлен с Props
параметром типа:
interface Props {
// ...
}
export class MyComponent extends React.Component<Props, any> { ... }
есть ли реальная польза от добавления
static propTypes {
myProp: React.PropTypes.string
}
к определению класса?
Typescript и PropTypes служат разным целям. Typescript проверяет типы во время компиляции , тогда как PropTypes проверяются во время выполнения .
TypeScript полезен при написании кода: он предупредит вас, если вы передадите аргумент неправильного типа вашим компонентам React, даст вам автозаполнение для вызовов функций и т. Д.
PropTypes полезны, когда вы тестируете, как компоненты взаимодействуют с внешними данными, например, когда вы загружаете JSON из API. PropTypes поможет вам отладить (в режиме разработки React), почему ваш компонент не работает, печатая полезные сообщения, такие как:
Хотя может показаться, что Typescript и PropTypes делают одно и то же, на самом деле они совсем не перекрываются. Но можно автоматически сгенерировать PropTypes из Typescript, чтобы вам не приходилось указывать типы дважды, см., Например:
источник
Я предполагаю, что в некоторых беспорядочных ситуациях, когда тип свойств не может быть определен во время компиляции, было бы полезно увидеть любые предупреждения, сгенерированные при использовании
propTypes
во время выполнения.Одна из таких ситуаций может возникнуть при обработке данных из внешнего источника, для которого определения типов недоступны, например внешнего API, не зависящего от вас. Для внутренних API, я думаю, стоит потратить усилия на написание (или, лучше сказать, генерацию) определений типов, если они еще не доступны.
Кроме этого, я не вижу никакой пользы (именно поэтому я никогда не использовал его лично).
источник