我尝试将自定义属性添加到本机JavaScript Error
const error = new Error(message);
error.name = name;
error.request = request;
Flow抛出以下错误(预期):
16: error.request = request;
^^^^^^^^ property `request`. Property not found in
16: error.request = request;
^^^^^ Error
我可以为此创建一个界面吗?
如果是的话,如何" downcast" Error
到新界面?
我已经阅读了很多类似情况的文章,但似乎解决方案是: - 很明显,很难找到新人 - 或者不存在,所以我们应该使用另一种模式
这里的任何例子都会非常感激。
答案 0 :(得分:1)
与大多数语言一样,您最好的选择可能是使用额外的特性来扩展Error对象。
例如。像 - >
之类的东西class MyError extends Error {
name: string;
request: any;
constructor(message, name, request) {
super (message);
this.name = name;
this.request = request;
}
}
然后使用喜欢 - >
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..