Reactjs 为什么流类型的libdefs类型工作不一致?

Reactjs 为什么流类型的libdefs类型工作不一致?,reactjs,react-router,flowtype,react-router-v4,flow-typed,Reactjs,React Router,Flowtype,React Router V4,Flow Typed,我有一个React项目,使用流进行静态类型检查;我使用流类型的安装了npm第三方库的libdef。但是,有时无法识别这些类型。例如,这里是一个使用React路由器domnpm包的React组件,带有标识符。。。使用相应的流类型/npm/react-router-dom_v4.x.x.js中的类型时,无法解决name流错误: 该类型位于libdef中,但: 我正在使用其他流类型的类型执行此操作,并且它正在工作。我已确认已在package.json中安装了最新的库,并安装了最新的相关flow-t

我有一个React项目,使用流进行静态类型检查;我使用
流类型的
安装了npm第三方库的libdef。但是,有时无法识别这些类型。例如,这里是一个使用
React路由器dom
npm包的React组件,带有
标识符。。。使用相应的
流类型/npm/react-router-dom_v4.x.x.js中的类型时,无法解决name
流错误:

该类型位于libdef中,但:

我正在使用其他
流类型的
类型执行此操作,并且它正在工作。我已确认已在
package.json中安装了最新的库,并安装了最新的相关
flow-typed
libdef:

我还尝试过像ES6模块那样显式导入类型,如下所示:

import type { RouterHistory } from 'react-router-dom'

从“react router dom”导入类型{RouterHistory}`

但这会导致在“react-router dom”中找不到
路由历史
错误,尽管您可以在上面的屏幕截图中看到它存在于
react-router-dom_v4.x.x.js
libdef from
flow-typed/npm/
;我认为,只有当npm库中有
*.js.flow
文件时,类型的显式导入才有效(后者
react router dom
没有,但在
flow typed
中定义)


因此问题是:如果在相关的
流类型化
libdef中定义了
路由历史类型,为什么它不起作用?

您的导入语句是错误的。应该是这样的:

import type { RouterHistory } from 'react-router-dom'
编辑:

RouterHistory类型似乎在react router包中。因为react-router dom使用react-router作为基本依赖项,所以应该添加带有流类型的react-router包。

在问题的末尾,您绝对需要输入行。一旦这样做,会出现什么错误?为什么需要导入行?我在
flow-typed
中使用的所有其他libdef都不使用类型导入。就像我可以使用React中的
SyntheticEvent
。即使如此,从“react router dom”添加
导入类型{RouterHistory}
也会导致在“react router dom”中找不到
RouterHistory
错误,即使
RouterHistory
类型在
react-router-dom\u v4.x.js
流类型文件中,如问题的屏幕截图所示。这会导致另一个错误:
在“react router dom”中未找到路由器历史记录。
react router dom
中没有
*.js.flow
文件,因此无法正常工作?啊,好的,RouterHistory类型似乎不是react router dom包的一部分。相反,您应该通过流类型安装react router包。我编辑了我的答案。如屏幕截图所示,
RouterHistory
位于
react-router-dom_v4.x.x.js
流类型文件中。您可以看到它存在于此处: