我在使用 HOC 时遇到了 Flow 错误,它只是注入了一个 prop,使用以下定义:
declare function injectFoo<P: {}>(
Component: React$ComponentType<{ foo: number } & P>
): React$ComponentType<P>;
但是,当我更改为此版本时,Flow 不再抱怨:
declare function injectFoo<P: {}>(
Component: React$ComponentType<{ foo: number, ...P }>
): React$ComponentType<P>;
我认为它们是等价的,但我猜不是。有人可以解释有什么区别或指出一些文档的方向吗?
流量版本:0.56
PS:这两种方法的真实示例可以在流类型存储库中withRouter (react-router) 和injectIntl (react-intl) 的流定义中找到。
编辑:我创建了一个干净的 create-react-app 项目来显示这个问题。该项目有 2 次提交,第一次有 Flow 错误,在第二次提交中通过将 injectIntl 的定义从交集更改为扩展来修复。https://github.com/hyperivo/sandbox-stackoverflow-46591826
编辑 2:流类型项目中的问题:https ://github.com/flowtype/flow-typed/issues/1314
谢谢