ステップピットサブクラスの[Tsは]エラー/アレイ/地図を継承し、サブクラスのメソッドにアクセスすることができない他の原因は、問題の宣言します

問題の説明

// 举个栗子
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ます代わりに、対応する機能の!

また:IE10では、以下、これを置き換えるためにAxiosError.prototypeを使用する場合は、互換性の問題があるが、問題は、チェーンのプロトタイプを適切に解決されません!

おすすめ

転載: www.cnblogs.com/fe-linjin/p/11402182.html