PropTypes và Flow bao gồm những thứ tương tự nhưng đang sử dụng các cách tiếp cận khác nhau. PropTypes có thể cung cấp cho bạn cảnh báo trong thời gian chạy, điều này có thể hữu ích để nhanh chóng tìm thấy các phản hồi không đúng định dạng đến từ máy chủ, v.v. Tuy nhiên, Flow dường như là tương lai và với các khái niệm như generic là một giải pháp rất linh hoạt. Ngoài ra, tính năng tự động hoàn thành do Nuclide cung cấp cũng là một điểm cộng lớn cho Flow.
Câu hỏi của tôi bây giờ là cách tốt nhất để đi, khi bắt đầu một dự án mới. Hoặc nó có thể là một giải pháp tốt để sử dụng cả Flow và PropTypes? Vấn đề với việc sử dụng cả hai là bạn viết rất nhiều mã trùng lặp. Đây là một ví dụ về ứng dụng trình phát nhạc mà tôi đã viết:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Cả hai định nghĩa về cơ bản đều chứa thông tin giống nhau và khi kiểu dữ liệu được thay đổi, cả hai định nghĩa đều cần được cập nhật.
Tôi đã tìm thấy plugin babel này để chuyển đổi khai báo kiểu thành PropTypes, đây có thể là một giải pháp.