为什么流式类型的libdef类型不能一致地工作?

时间:2017-07-03 16:00:18

标签: reactjs react-router flowtype react-router-v4 flow-typed

我有一个使用Flow进行静态类型检查的React项目;我使用flow-typed安装了npm第三方库的libdefs。但是,有时候不能识别这些类型。例如,以下是使用react-router-dom npm包的React组件,使用相应identifier ... Could not resolve name中的类型时出现flow-typed/npm/react-router-dom_v4.x.x.js Flow错误:

flow error

虽然类型在libdef中:

react-router-dom flow-typed

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

package.json lateset react-router-dom

flow-typed latest react-router-dom

来自https://github.com/flowtype/flow-typed/tree/master/definitions/npm/react-router-dom_v4.x.x

我也尝试过显式导入类似ES6模块的类型:

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

但这会导致RouterHistory not found in 'react-router-dom'错误,即使您在上面的屏幕截图中可以看到它存在于react-router-dom_v4.x.x.js来自flow-typed/npm/的libdef中;我认为显式导入类型只有在npm库中包含*.js.flow个文件时才会起作用(react-router-dom没有,但在flow-typed中定义)。

所以问题是:如果RouterHistory类型在相关的flow-typed libdef 中定义,那么为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

您的导入声明错误。它应该是这样的:

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

编辑:

似乎RouterHistory类型在react-router包中。由于react-router-dom使用react-router作为基本依赖,因此您应该使用flow-typed添加react-router软件包。 Flow-React-Router