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