使用 Flow 时如何向错误对象添加调试信息?



这是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;

最新更新