문제 설명
// 举个栗子
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합니다 대신 해당 기능!