Flowtype:具有动态键类型注释的泛型类型

时间:2018-11-09 17:27:04

标签: reactjs react-native flowtype

我在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>),但是经过大量尝试和阅读文档后,我可以似乎不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

尝试$Keys

type Props<T> = {
  dataArray: T[],
  filterProp: $Keys<T>,
  renderRow( item: T ): Object,
};