这是JavaScript中的常见模式:
const error = new TypeError('Unknown element type');
error.foo = foo;
throw error;
(即在抛出错误实例之前将一些相关对象附加到它,以便进行调试。
但Flow抱怨道:
property `foo`
Property not found in
TypeError
在Flow 中对此的正确解决方案是什么?
您可以为其创建一个更具体的子类型:
class SubTypeError extends TypeError {
foo : string;
constructor(msg){
super(msg);
this.foo = '';
}
}
const error = new SubTypeError('Unknown element type');
error.foo = 'hey';
throw error;
尽管这很可能不适用于类语法转换器(如 babel 类转换器(。
在分配foo
属性之前,可以将错误强制转换为any
:
const error = new TypeError('Unknown element type');
(error: any).foo = 'foo';
throw error;