Javascript 向错误动态添加属性的流

Javascript 向错误动态添加属性的流,javascript,flowtype,Javascript,Flowtype,我尝试将自定义属性添加到本机JavaScriptError const error = new Error(message); error.name = name; error.request = request; 流抛出以下错误(这是预期的): 我可以为此创建一个接口吗? 如果是,如何将错误向下投射到新界面 我读过很多类似场景的文章,但解决方案似乎是: -很明显,对于新手来说很难找到 -或者不存在,所以我们应该使用另一种模式 这里的任何示例都将非常感谢。与大多数语言一样,您最好使

我尝试将自定义属性添加到本机JavaScript
Error

  const error = new Error(message);
  error.name = name;
  error.request = request;
流抛出以下错误(这是预期的):

我可以为此创建一个接口吗? 如果是,如何将
错误
向下投射到新界面

我读过很多类似场景的文章,但解决方案似乎是: -很明显,对于新手来说很难找到 -或者不存在,所以我们应该使用另一种模式


这里的任何示例都将非常感谢。

与大多数语言一样,您最好使用额外的属性扩展Error对象

比如->

class MyError extends Error {
  name: string;
  request: any;
  constructor(message, name, request) {
    super (message);
    this.name = name;
    this.request = request;
  }
}
然后使用like->

const error = new MyError(message, name, request);
或者,如果子分类不是一个选项。也许->

const error = (new Error(message):any);
error.name = name;
error.request = request;
或者进行更多的类型检查

interface ErrorNameRequest {
   name?: string;
   request?: any;
}

const error = (new Error(message):ErrorNameRequest);
error.name = 'one two three';
error.name2 = 'xyz';  //error..

扩展对象并添加您自己的属性我不想扩展对象的原因有很多。以下是我更努力实现的目标:但Flow不喜欢它。这确实会解决问题,但会引入新的问题。我更想找到一种方法来保留我的代码,但让Flow接受它。我不确定是否会投反对票,但我已经用更多的备选方案更新了我的答案。多亏了你的答案,我最终混合使用了最后两个建议:
const error:crawleror=(新错误(消息):any)
interface ErrorNameRequest {
   name?: string;
   request?: any;
}

const error = (new Error(message):ErrorNameRequest);
error.name = 'one two three';
error.name2 = 'xyz';  //error..