这是JavaScript中的常见模式:
const error = new TypeError('Unknown element type');
error.foo = foo;
throw error;
(即在抛出之前将一些相关对象附加到Error实例,以进行调试。)
但Flow抱怨道:
property `foo`
Property not found in
TypeError
Flow中的正确解决方案是什么?
答案 0 :(得分:2)
你可以使它的子类型更具体:
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类变换器)。
答案 1 :(得分:0)
您可以在分配any
属性之前将错误转换为foo
:
const error = new TypeError('Unknown element type');
(error: any).foo = 'foo';
throw error;