Javascript 如何使用流类型提示和Jest处理错误
我有一个这样定义的类:Javascript 如何使用流类型提示和Jest处理错误,javascript,jestjs,flowtype,Javascript,Jestjs,Flowtype,我有一个这样定义的类: class MyClass{ constructor(data:Array<any>){ ... } } test('bad args', () => { expect(new MyClass()).toThrow(); expect(new MyClass({})).toThrow(); expect(new MyClass('string')).toThrow(); }); 我希望这些都会出错,因为类型暗示不允许空构
class MyClass{
constructor(data:Array<any>){
...
}
}
test('bad args', () => {
expect(new MyClass()).toThrow();
expect(new MyClass({})).toThrow();
expect(new MyClass('string')).toThrow();
});
我希望这些都会出错,因为类型暗示不允许空构造函数参数,并且希望第一个参数是数组而不是对象或字符串
谁能解释一下我是如何说服Jest在类型不正确的情况下通过流和错误运行代码的
编辑:
我还运行了flow-typed安装jest@23.6.0//正确的jest版本
Babel将获取您的流代码并去掉任何类型注释
所以,flow可以帮助您在构建之前(通常在开发时,在ide中)找到错误的调用。一旦在项目中运行flow
,您就可以发现签名不匹配的地方
删除编译流注释后,您就拥有了纯javascript
因此,如果构造函数接受any
arg,但只有数组是有效的,则可以显式声明:
class MyClass {
constructor(data:*) {
if (!Array.isArray(data)) {
throw new Exception('Bad argument');
}
}
}
如果您也指定了
data:Array
,那么上述代码库也可以工作,但是您会在编译时看到错误(这样您就可以找出应该责备的人:)。谢谢,这很有道理-我没有仔细考虑过