PropTypes dan Flow mencakup hal-hal yang serupa tetapi menggunakan pendekatan yang berbeda. PropTypes dapat memberi Anda peringatan selama runtime, yang dapat membantu untuk dengan cepat menemukan respons yang salah format yang berasal dari server, dll. Namun, Flow tampaknya akan menjadi masa depan dan dengan konsep seperti obat generik adalah solusi yang sangat fleksibel. Juga pelengkapan otomatis yang ditawarkan oleh Nuclide merupakan nilai tambah yang besar untuk Flow.
Pertanyaan saya sekarang adalah yang mana cara terbaik untuk pergi, ketika memulai proyek baru. Atau mungkinkah ini solusi yang baik untuk menggunakan keduanya, Flow dan PropTypes? Masalah dengan menggunakan keduanya adalah Anda menulis banyak kode duplikat. Ini adalah contoh aplikasi pemutar musik yang saya tulis:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Kedua definisi tersebut pada dasarnya berisi informasi yang sama dan ketika tipe datanya diubah, kedua definisi tersebut perlu diperbarui.
Saya menemukan plugin babel ini untuk mengonversi deklarasi tipe ke PropTypes, yang mungkin bisa menjadi solusi.