問題の説明
// 举个栗子
class AxiosError extends Error {
constructor(message: string) {
super(message)
}
getError() {
return "error: " + this.message
}
}
上記、我々はAxiosErrorクラスを宣言するために、TS構文でES6使用し、中にメソッドを宣言しますが、以下の2つの問題が発生します。
- この方法は、未定義getErrorです
- AxiosError instanceofは新しいAxiosErrorは、()はfalseを返します。
ソリューション
class AxiosError extends Error {
constructor(message: string) {
super(message)
// Set the prototype explicitly
Object.setPrototypeOf(this, AxiosError.prototype)
}
getError() {
return "error: " + this.message
}
}
このように、いずれかのマニュアルでは、それがニーズに関連している場合、我々はObject.setPrototypeOfを使用して行くことはできませんが、__proto__するために使用することが、私たちは、コードの実行に注意を払う必要がある場合で、プロトタイプを設定するには、サブクラスをAxiosErrorます代わりに、対応する機能の!