계단 구덩이 서브 클래스에 [TS]는 오류 / 배열 /지도를 상속 및 하위 클래스 방법에 액세스 할 수있는 다른 원인은 질문에 선언

문제 설명

// 举个栗子
class AxiosError extends Error {
    constructor(message: string) {
        super(message)
    }

    getError() {
        return "error: " + this.message
    }
}

위, 우리는 AxiosError 클래스를 선언하는 TS 구문 ES6 사용하고있는 방법을 선언하지만 다음과 같은 두 가지 문제가 발생합니다 :

  • 이 방법은 미정 인은 GetError
  • AxiosError instanceof를 새로운 AxiosError ()는 거짓을 반환

솔루션

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