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

时间:2017-07-28 11:50:30

标签: javascript flowtype

这是JavaScript中的常见模式:

const error = new TypeError('Unknown element type');
error.foo = foo;
throw error;

(即在抛出之前将一些相关对象附加到Error实例,以进行调试。)

但Flow抱怨道:

property `foo`
Property not found in
TypeError

Flow中的正确解决方案是什么?

2 个答案:

答案 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;