" JQuery接口文件" for Flow(来自Facebook的JavaScript静态类型检查器)?

时间:2015-02-03 10:01:49

标签: javascript jquery facebook typechecking flowtype

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)

2 个答案:

答案 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函数提供的参数类型,并在您传递错误类型时发出警告。