Typescript prüft die Laufzeit nicht. Und da ein Error
IS any
(any
bedeutet nur "beliebiges Objekt"), ist der Aufruf handleError(error: any)
mit einem Error
Objekt perfekt gültig.
Es ist ein bisschen wie "Opt-out" der Typ-Überprüfung während der Übertragung in Javascript.
Also, wenn Sie sagen: "druckt Fehler uncaught (in Versprechen): [Object Object] als die Art der Fehler Objekt ist any.", Chancen sind die "jeder" Typ ist tatsächlich ein Fehler. Wenn Sie ein Objekt auf der Konsole ausdrucken, sieht es immer wie [object Object]
aus (es sei denn, Ihre Konsole verfügt über ein gutes Parsing wie die Chrome-Konsole, auf der ein interaktives Objekt angezeigt wird). Wenn Sie die JSON wollen: tun error.toJSON()
und Sie werden alle Felder im Fehlerobjekt sehen und in der Lage zu sagen, ob es tatsächlich eine Error
ist.
Ich vermute, Sie etwas entlang der Linien von tun:
console.log('Error', error.message);
Ich weiß nicht, welche Felder Fehler der Spitze von meinem Kopf hat ab. Wenn Sie auch nicht tun, können Sie den as
Befehl verwenden, um die Dinge einfach, wenn Sie Code schreiben:
handleError(e: any) {
// do something with the exception
const error as Error;
console.log('Error', error.message);
}
natürlich, dass brechen würde, wenn jemand es auf einem nicht Error-Objekt verwendet (oder ein Objekt das hat kein message
, so ist es wahrscheinlich am besten, einen Scheck zu machen:
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!');
}
}