PropTypes und Flow decken ähnliche Dinge ab, verwenden jedoch unterschiedliche Ansätze. PropTypes kann Sie zur Laufzeit warnen. Dies kann hilfreich sein, um fehlerhafte Antworten von einem Server usw. schnell zu finden. Flow scheint jedoch die Zukunft zu sein und ist mit Konzepten wie Generika eine sehr flexible Lösung. Auch die von Nuclide angebotene Autovervollständigung ist ein großes Plus für Flow.
Meine Frage ist nun, welcher Weg der beste ist, wenn Sie ein neues Projekt starten. Oder könnte es eine gute Lösung sein, sowohl Flow als auch PropTypes zu verwenden? Das Problem bei der Verwendung von beiden ist, dass Sie viel doppelten Code schreiben. Dies ist ein Beispiel für eine Musik-Player-App, die ich geschrieben habe:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Beide Definitionen enthalten grundsätzlich die gleichen Informationen. Wenn der Datentyp geändert wird, müssen beide Definitionen aktualisiert werden.
Ich habe dieses Babel-Plugin gefunden , um Typdeklarationen in PropTypes zu konvertieren, was eine Lösung sein könnte.