我在React Native项目中使用Flow,但是在尝试输入我的Props定义之一时遇到了麻烦。具体来说,我正在尝试创建一个组件,该组件呈现可通过搜索输入过滤的列表。
我的组件接受3个道具:
dataArray
:包含要显示的对象的数组renderRow
:该函数接受dataArray
中的一项作为唯一参数并返回React节点filterProp
:要过滤的属性名称-应该出现在dataArray
中的每个项目上要过滤此列表,我将使用类似的内容:
dataArray.filter(item => item[filterProp].includes(searchterm));
到目前为止,我对道具的定义是这样的:
type Props<T> = {
dataArray: T[],
filterProp: string | number,
renderRow( item: T ): Node,
};
现在,我希望Flow检查dataArray
中的每个项目是否具有一个名为string
的属性(类型为<value of filterProp>
),但是经过大量尝试和阅读文档后,我可以似乎不知道该怎么做。
答案 0 :(得分:0)
尝试$Keys:
type Props<T> = {
dataArray: T[],
filterProp: $Keys<T>,
renderRow( item: T ): Object,
};