PropTypes y Flow cubren cosas similares pero utilizan enfoques diferentes. PropTypes puede darle advertencias durante el tiempo de ejecución, lo que puede ser útil para encontrar rápidamente respuestas mal formadas provenientes de un servidor, etc. Sin embargo, Flow parece ser el futuro y con conceptos como genéricos es una solución muy flexible. Además, el autocompletado que ofrece Nuclide es una gran ventaja para Flow.
Mi pregunta ahora es cuál es la mejor manera de hacerlo cuando se inicia un nuevo proyecto. ¿O podría ser una buena solución utilizar Flow y PropTypes? El problema de usar ambos es que escribe mucho código duplicado. Este es un ejemplo de una aplicación de reproductor de música que escribí:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Ambas definiciones contienen básicamente la misma información y cuando se cambia el tipo de datos, ambas definiciones deben actualizarse.
Encontré este complemento de babel para convertir declaraciones de tipo a PropTypes, lo que podría ser una solución.