我有一些复杂的Mocha代码,我想用FlowType静态检查,因为为什么不呢?
以下是最小的复制品:
> $null = Get-ChildItem / -OutVariable ov; $($ov).GetType().FullName
System.Object[] # multi-element System.Collections.ArrayList converted to array
当我对此运行Flow时,Flow确实发现了/* @flow */
describe('it', function () {
it('fails', function() {
const s: number = 'flow spots this error';
});
});
到string
的分配问题,这表明该方法在某种程度上有效。
但是,我也得到了:
number
......显然Mocha测试定义是在这些功能全局可用的环境中运行的,但是查看测试文件并没有什么能让Flow检测到它。
我不确定这些问题是否特定于摩卡,但我不觉得我可以自信地用更广泛的术语来构建问题,所以我的问题是:
test/test.js:4
4: describe('it', function () {
^^^^^^^^ identifier `describe`. Could not resolve name
test/test.js:5
5: it('fails', function() {
^^ identifier `it`. Could not resolve name
或describe
的每一行的情况下检查流式检查Mocha测试代码?答案 0 :(得分:4)
第三方库通常需要定义文件,即包含给定库的所有类型信息的文件。
在这种情况下,你需要一个mocha的定义文件,幸运的是由flow-typed.提供
用
安装npm install -g flow-typed
然后运行
flow-typed install
它将自动安装依赖项的所有可用定义文件,包括mocha。
答案 1 :(得分:1)
您只需声明流describe
,it
变量。
/* @flow */
declare var describe: any;
declare var it: any;
describe('it', function () {
it('fails', function() {
const s: number = 'flow spots this error';
});
});