PropTypes e Flow coprono cose simili ma utilizzano approcci diversi. PropTypes può darti avvisi durante il runtime, che possono essere utili per trovare rapidamente risposte errate provenienti da un server, ecc. Tuttavia, Flow sembra essere il futuro e con concetti come i generici è una soluzione molto flessibile. Anche il completamento automatico offerto da Nuclide è un grande vantaggio per Flow.
La mia domanda ora è quale sia il modo migliore per iniziare un nuovo progetto. O potrebbe essere una buona soluzione utilizzare entrambi, Flow e PropTypes? Il problema con l'utilizzo di entrambi è che scrivi molto codice duplicato. Questo è un esempio di un'app per lettore musicale che ho scritto:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Entrambe le definizioni contengono fondamentalmente le stesse informazioni e quando il tipo di dati viene modificato, entrambe le definizioni devono essere aggiornate.
Ho trovato questo plugin babel per convertire le dichiarazioni di tipo in PropTypes, che potrebbe essere una soluzione.