PropTypes i Flow obejmują podobne rzeczy, ale używają różnych podejść. PropTypes może generować ostrzeżenia w czasie wykonywania, co może być pomocne w szybkim znajdowaniu źle sformułowanych odpowiedzi pochodzących z serwera itp. Jednak Flow wydaje się być przyszłością, a koncepcje takie jak generics są bardzo elastycznym rozwiązaniem. Również autouzupełnianie oferowane przez Nuclide jest dużym plusem dla Flow.
Moje pytanie brzmi teraz, co jest najlepszą drogą do rozpoczęcia nowego projektu. A może dobrym rozwiązaniem byłoby użycie zarówno Flow, jak i PropTypes? Problem z używaniem obu polega na tym, że piszesz dużo zduplikowanych kodów. Oto przykład aplikacji do odtwarzania muzyki, którą napisałem:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Obie definicje zawierają zasadniczo te same informacje, a po zmianie typu danych należy zaktualizować obie definicje.
Znalazłem tę wtyczkę Babel do konwersji deklaracji typu na PropTypes, co może być rozwiązaniem.