我有一个使用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错误:
虽然类型在libdef中:
我正在使用其他flow-typed
类型执行此操作,但它正在运行。我已确认在package.json
中安装了最新的库,并安装了最新的相关flow-typed
libdef:
来自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 中定义,那么为什么它不起作用?
答案 0 :(得分:1)
您的导入声明错误。它应该是这样的:
import type { RouterHistory } from 'react-router-dom'
编辑:
似乎RouterHistory类型在react-router包中。由于react-router-dom使用react-router作为基本依赖,因此您应该使用flow-typed添加react-router软件包。 Flow-React-Router