使用流0.35.0
,可用于flow-typed的chai libdef(可用here)似乎不支持断言接口。
所以我决定自己为自己的项目申报,因为我只使用了6个断言函数。
以下是我所做的并且工作正常:
declare class ChaiAssert {
isFalse (o: any) : boolean;
instanceOf (x: any, t: any): boolean;
isNumber (x: any) : boolean;
isString (x: any) : boolean;
isTrue (x: any) : boolean;
isNull (x: any) : boolean;
throws (f: F) : boolean;
}
...在我的代码中,声明使用如下:
const assert: ChaiAssert = require('chai').assert;
就像我说的那样,这是有效但不令人满意的,因为它迫使我为assert
对象定义一个任意名称,也没有将chai
声明为模块。
试图模仿所讨论的一些方法here我尝试了下面的工作:
declare class AssertClass {
static isFalse (o: any) : void;
static instanceOf (x: any, t: any): void;
static isNumber (x: any) : void;
static isString (x: any) : void;
static isTrue (x: any) : void;
static isNull (x: any) : void;
static throws (f: F) : void;
}
declare export var assert: typeof AssertClass
...在我的代码中,import语句使用了更惯用的语法(以前的方法无法实现),如下所示:
import {assert} from 'chai';
但是我不知道这是否是声明assert
导出的chai
对象的正确方法(除了它似乎正在工作的事实)。
例如,我在libdef中声明了一个带有一些静态方法的虚构类AssertClass
。但是,我不知道这是assert
导出chai
导出的对象的方式 - 它是否是任何类的实例,更不用说该类有静态方法了。我试着查看代码但无法解析它。
所以我的问题是:
如果是这样,我是否必须在导入时进一步注释assert
对象。以下似乎是不必要的和语法错误:
import {assert: AssertClass} from 'chai';