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