Igo*_*tov 14 javascript flowtype
我用flow init新的https://github.com/davezuko/react-redux-starter-kit项目初始化了流程项目.
当Flow检查时,它在node_modules中发现了几个错误.错误发生在/*flow*/带注释的库文件中.
它看起来像这样:
node_modules/editions/source/index.js:33
33: const {name, editions} = require(packagePath)
^^^^^^^^^^^^^^^^^^^^ The parameter passed to require() must be a literal string.
node_modules/fbjs/lib/Deferred.js.flow:60
60: Promise.prototype.done.apply(this._promise, arguments);
^^^^ property `done`. Property not found in
474: declare class Promise<+R> {
^ Promise. See lib: /private/tmp/flow/flowlib_d34ebcf/core.js:474
node_modules/fbjs/lib/shallowEqual.js.flow:29
29: return x !== 0 || 1 / (x: $FlowIssue) === 1 / (y: $FlowIssue);
^^^^^^^^^^ identifier `$FlowIssue`. Could not resolve name
Run Code Online (Sandbox Code Playgroud)
我应该让Flow忽略那些文件吗?我认为它可能会影响类型检查的正确性.
Gab*_*evi 29
fbj和版本都是使用Flow编写的.它们每个都有.flowconfig各种配置的文件.您看到的所有错误都是由于您.flowconfig的配置略有不同.
最简单的解决方法是修改您的版本.flowconfig以支持版本和fbjs正在使用的内容.
module.ignore_non_literal_requires=true到该[options]部分应修复第一个错误.默认情况下,如果将变量传递给Flow,则会出错require(),因为Flow想要了解依赖关系图.此选项放宽了此要求../node_modules/fbjs/flow/lib到该[libs]部分应修复第二个错误.fbjs使用的是非标准版本Promise,但它附带了该版本的库定义Promise.suppress_type=$FlowIssue到该[options]部分应修复第三个错误.此选项只是将any类型别名为$FlowIssue.当您使用any抑制错误时,它会更清晰.在未来,Flow团队会想象Flow用户会选择node_modules/完全忽略,而是依赖于https://github.com/flowtype/flow-typed/中的库定义,因此我们将围绕流程进行定义和工具投资 -类型.这样可以避免您遇到的那种情况.
我个人喜欢通过这样做来忽略 node_modules 下的所有内容。
[ignore]
.*/node_modules/.*
Run Code Online (Sandbox Code Playgroud)
然后我使用流类型来安装或存根所有导入 https://github.com/flowtype/flow-typed