在React Native上配置Flow以忽略“缺少...的类型注释”错误

时间:2019-02-22 19:14:07

标签: javascript reactjs react-native types flowtype

我正在一个React Native项目中,我想逐步采用flow。许多组件已经定义了propsstate流类型。但是大多数方法和变量仍然不使用流类型。运行yarn flow时,我遇到成千上万个错误,说Missing type annotation for ...

我现在想将流程配置为忽略此类错误。稍后,我将为所有内容添加类型,并且只有当我在每个js文件中完全键入所有对象时,这些错误才会相关。但这可能需要很长时间。因此,在继续检查流中已经使用流类型的文件部分的同时,如何临时或有选择地禁用这些错误警告?

2 个答案:

答案 0 :(得分:1)

您无法关闭Flow中的特定错误。流仓库的根部有一个可以自动添加抑制的工具: https://github.com/facebook/flow/blob/master/tool

答案 1 :(得分:0)

我并不是说任何人都应该这样做,但是...这就是我的做法。我必须找到另一种方法,因为约旦的tool解决方案对我不起作用。手动调用flow-bin,解析返回的json,并跳过您不关心的任何错误。

flow.js

const execFile = require('child_process').execFile
const flow = require('flow-bin')

const IGNORE_ERROR_CODES = [
  'missing-annot'
]

const isValidError = (error) => !error.error_codes.some(code => IGNORE_ERROR_CODES.includes(code))
 
execFile(flow, ['check', '--json'], (err, stdout) => {

  if (!stdout) {
    console.error(err, stdout)
    process.exit(1)
  }

  const result = JSON.parse(stdout)
  const errors = result.errors.filter(isValidError)
  const hasErrors = errors.length > 0

  if (hasErrors) {
    console.log(JSON.stringify(errors, null, 2))
    process.exit(1)
  } else {
    console.log('Flow passed')
    process.exit(0)
  }

})

package.json脚本

{
    "scripts": {
        "flow": "node flow.js"
    }
}