PropTypes и Flow охватывают похожие вещи, но используют разные подходы. PropTypes может выдавать вам предупреждения во время выполнения, что может быть полезно для быстрого поиска искаженных ответов, исходящих от сервера и т. Д. Однако Flow, похоже, является будущим, и с такими концепциями, как generics, это очень гибкое решение. Также автозаполнение, предлагаемое Nuclide, является большим плюсом для Flow.
Мой вопрос теперь в том, какой путь лучше всего использовать при запуске нового проекта. Или может быть хорошим решением использовать оба типа - Flow и PropTypes? Проблема с использованием обоих заключается в том, что вы пишете много повторяющегося кода. Это пример приложения для музыкального плеера, которое я написал:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Оба определения в основном содержат одинаковую информацию, и при изменении типа данных оба определения необходимо обновить.
Я нашел этот плагин babel для преобразования объявлений типов в PropTypes, что могло бы стать решением.