2014年11月,3个月前,Facebook开源了一个新的命令行工具,一个名为“Flow”的静态类型检查器。现在我想在一些旧的现有javascript文件上运行它。这些包含对jQuery库的引用。
我的JS文件不是用静态类型检查编写的。 但是,在文件顶部包含/ * @flow * /之后,当我使用此命令运行流程时:
flow myfile.js
结果:
/var/www/myfilejs:70:12,17: identifier jQuery
Unknown global name
Found 1 error
据我了解,将jQuery包含在 Flow 的类型检查过程中的方法是create an "interface file"。
有没有人为jQuery库做过这个? (我使用jQuery 1.9)
答案 0 :(得分:4)
这是我的界面文件我想在我调用的文件夹中调用jQuery.js
" flow_lib"。此文件夹可以在任何地方。
这是jQuery.js
包含的接口声明代码:
declare module "jQuery" {
declare function $(obj: any): any;
}
var $ = require('$').$;
在.flowconfig
中,添加如下文件夹:
[ignore]
[include]
[libs]
<path-to-folder>/flow_lib
[options]
注意:此方法不检查实际的jQuery规范。它只是一个快速解决方法,可以摆脱代码中与$
相关的流量警告和错误。如果您想更具体,请使用以下内容:https://github.com/solnetdigital/flow-interfaces-jquery/blob/master/interfaces/jquery.js
答案 1 :(得分:1)
如果您想要一个实际的jQuery流接口定义,您可以查看https://github.com/marudor/flowInterfaces中提供的那个。
使用以下命令安装:
npm install --save-dev iflow-jquery
或
yarn add --dev iflow-jquery
然后将以下内容添加到.flowconfig
文件中:
[libs]
node_modules/iflow-jquery/index.js.flow
之后,flow将推断您为jquery函数提供的参数类型,并在您传递错误类型时发出警告。