Angular 如何将任何类型的错误更改为错误类型的错误?

Angular 如何将任何类型的错误更改为错误类型的错误?,angular,typescript,Angular,Typescript,我使用ErrorHandler来捕获生成的异常。 捕获的错误类型为error,但这里的类内错误类型为error:any,由哪个console.log(“error”,error)引起;打印未捕获的错误(承诺):[object object],因为错误对象的类型是任意的 如何在handleError(error:any)中将error对象更改为error?类型脚本在运行时不键入check。由于Error是any(any仅表示“any object”),因此使用Error对象调用handleErro

我使用ErrorHandler来捕获生成的异常。 捕获的错误类型为error,但这里的类内错误类型为
error:any
,由哪个console.log(“error”,error)引起;打印未捕获的错误(承诺):[object object],因为错误对象的类型是任意的


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

类型脚本在运行时不键入check。由于
Error
any
any
仅表示“any object”),因此使用
Error
对象调用
handleError(Error:any)
是完全有效的

这有点像在转换成javascript时“选择退出”类型检查

因此,当您说:“未捕获打印错误(承诺):[object object],因为错误对象的类型是any。”,那么“any”类型很可能实际上是一个错误。当你将一个对象打印到控制台时,它看起来总是像
[object object]
(除非你的控制台有一些很好的解析功能,比如Chrome的控制台,它显示一个交互式对象)。如果您想要json:do
error.toJSON()
,您将看到error对象中的所有字段,并能够判断它是否实际上是一个
错误

我怀疑你想做一些类似的事情:

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

class MyErrorHandler implements ErrorHandler {
  handleError(error:any) {  
    // do something with the exception
     console.log('Error',error);
  }
}
我不知道我脑子里到底是怎么想的。如果两者都没有,则可以使用
as
命令在编写代码时简化操作:

console.log('Error', error.message);
当然,如果有人在非错误对象(或没有
消息的对象)上使用它,则会出现这种情况,因此最好进行检查:

handleError(e: any) {  
  // do something with the exception
  const error as Error;
  console.log('Error', 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!');
  }
}