PropTypes et Flow couvrent des choses similaires mais utilisent des approches différentes. PropTypes peut vous donner des avertissements pendant l'exécution, ce qui peut être utile pour trouver rapidement des réponses malformées provenant d'un serveur, etc. Cependant, Flow semble être l'avenir et avec des concepts comme les génériques, c'est une solution très flexible. L'auto-complétion offerte par Nuclide est également un gros plus pour Flow.
Ma question est maintenant de savoir quelle est la meilleure façon de procéder pour démarrer un nouveau projet. Ou pourrait-il être une bonne solution d'utiliser les deux, Flow et PropTypes? Le problème avec l'utilisation des deux est que vous écrivez beaucoup de code en double. Voici un exemple d'application de lecteur de musique que j'ai écrit:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Les deux définitions contiennent essentiellement les mêmes informations et lorsque le type de données est modifié, les deux définitions doivent être mises à jour.
J'ai trouvé ce plugin babel pour convertir les déclarations de type en PropTypes, ce qui pourrait être une solution.