PropTypes и Flow покрывают подобные вещи, но используют разные подходы. PropTypes может давать вам предупреждения во время выполнения, что может быть полезно для быстрого поиска неверных ответов, поступающих с сервера, и т.д. Однако Flow, похоже, является будущим, и с такими понятиями, как generics, это очень гибкое решение. Также автозаполнение, предлагаемое Nuclide, является большим плюсом для потока.
Теперь мой вопрос - это лучший способ начать новый проект. Или это может быть хорошим решением для использования как 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, что может быть решением.