PropType 和 Flow 涵盖了类似的内容,但使用了不同的方法。PropType 可以在运行时提供警告,这有助于快速查找来自服务器的异常响应,等等。然而,Flow 似乎是未来的趋势,并且使用泛型等概念是一种非常灵活的解决方案。此外,自动完成提供的核素是一个很大的优势流。
我现在的问题是,当开始一个新项目时,哪种方式是最好的。或者同时使用 Flow 和 PropType 会是一个好的解决方案吗?同时使用这两种方法的问题在于要编写大量重复的代码。这是我写的一个音乐播放器应用程序的例子:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
两个定义基本上包含相同的信息,当数据类型发生更改时,需要更新两个定义。
我发现这个 Babel 插件可以将类型声明转换为 PropType,这可能是一个解决方案。