Reactjs 为第三方组件添加的道具声明流类型

Reactjs 为第三方组件添加的道具声明流类型,reactjs,flowtype,Reactjs,Flowtype,我使用Victory JS在React中创建图表。Victory有一个名为的组件,它可以携带一个名为labelComponent的道具,我正在传递该道具 例如: 问题是我正在使用Flow进行类型检查,并且VictoryBar向添加了道具。这是我的BarLabel道具类型和组件本身。我在评论中解释了这个问题 类型BarLabelProps={ 样式?:对象, x?:数字, y0?:数字, //问题就在这里。当基准是可选的时,我得到了流量误差 //该props.datum.name无效,因为无法

我使用Victory JS在React中创建图表。Victory有一个名为
的组件,它可以携带一个名为
labelComponent
的道具,我正在传递该道具

例如:


问题是我正在使用Flow进行类型检查,并且
VictoryBar
添加了道具。这是我的BarLabel道具类型和组件本身。我在评论中解释了这个问题

类型BarLabelProps={
样式?:对象,
x?:数字,
y0?:数字,
//问题就在这里。当基准是可选的时,我得到了流量误差
//该props.datum.name无效,因为无法从中访问.name
//可能是空值。当需要时(没有问号),我会得到一个错误
//因为当我将组件传递给它时,它不包含
//直到VictoryBar做它的事之前,道具数据。
基准面:对象,
};
功能条形标签(道具:BarLabelProps){
返回(
{props.datum.name}
);
}

flow文档给出了一个在高阶函数上指定道具的示例,但对我的场景没有帮助我如何告诉flow这些道具是通过
VictoryBar
添加的?

要支持项目中第三方库的流类型,您可以使用该模块。他们的安装说明说要进行全局安装,例如
warn global add flow typed
npm install-g flow typed

现在,Victory已经安装了这个模块,您需要创建一个存根来删除您正在使用的Victory版本的流错误。这可以通过
流类型创建存根
命令完成,例如:

flow-typed create-stub victory@^30.3.0
这将生成将流类型声明到
/Flow-typed
目录中的文件。这将删除与Victory相关的任何流错误。您可以了解有关声明流类型的更多信息

一般来说,对于第三方库,最好查看流类型是否已经存在,此时可以安装它们。这可以通过
流式安装
命令完成,例如

flow-typed install bson@^1.0.0

对于现有的流类型,您还可以将声明从复制并粘贴到项目的
/Flow-typed
目录中。

这是一个有趣的问题。我对React和Flow的特例不是很有经验,但我认为目前还没有一种方法可以对此进行建模。@Pizza-r0b,你想为此推出一个复制回购/代码沙盒吗?我很想帮忙,但我有点懒,不想把整个事情安排好