gpt4 book ai didi

angular - any类型的error怎么改成Error类型的error呢?

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:39 26 4
gpt4 key购买 nike

import {NgModule, ErrorHandler} from '@angular/core';

class MyErrorHandler implements ErrorHandler {
handleError(error:any) {
// do something with the exception
console.log('Error',error);
}
}

我正在使用 ErrorHandler 来捕获生成的异常。捕获到的错误是 ERROR 类型,但在类中错误是 error:any 类型,因为 console.log('Error', error);打印 Error Uncaught (in promise): [object Object] 因为错误对象的类型是任何类型。

如何在 handleError(error:any) 中将错误对象更改为 ERROR?

最佳答案

Typescript 不会在运行时进行类型检查。作为一个 Errorany(any 只是表示“任何对象”),调用 handleError(error: any) 带有 Error 对象是完全有效的。

这有点像在转译为 javascript 期间“选择退出”类型检查。

所以当你说:“打印 Error Uncaught (in promise): [object Object] 因为错误对象的类型是任何类型。”,“任何”类型实际上是一个错误。当您将一个对象打印到控制台时,它总是看起来像 [object Object](除非您的控制台有一些像 Chrome 控制台那样的很好的解析,它显示一个交互式对象)。如果您想要 json: 执行 error.toJSON(),您将看到错误对象中的所有字段,并能够判断它是否实际上是一个 Error

我怀疑您想按照以下方式做一些事情:

console.log('Error', error.message);

我不知道 Error 有哪些字段超出了我的脑海。如果您不这样做,您可以在编写代码时使用 as 命令使事情变得简单:

handleError(e: any) {  
// do something with the exception
const error as Error;
console.log('Error', error.message);
}

当然,如果有人在非 Error 对象(或没有 message 的对象)上使用它,那将会中断,因此最好进行检查:

handleError(e: any) {  
// do something with the exception
const error as Error;
if (error.message) {
console.log('Error', error.message);
} else {
console.log('Unspecified error!');
}
}

关于angular - any类型的error怎么改成Error类型的error呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com