Ada*_*myd 6 inheritance types instanceof typescript
有人可以解释我为什么error instanceof CustomError下面的代码部分是false?
class CustomError extends Error {}
const error = new CustomError();
console.log(error instanceof Error); // true
console.log(error instanceof CustomError); // false ???
class ParentClass {}
class ChildClass extends ParentClass { }
const child = new ChildClass();
console.log(child instanceof ParentClass); // true
console.log(child instanceof ChildClass); // true
Run Code Online (Sandbox Code Playgroud)
Error 对象有什么特别之处吗?我想制作我自己可以检查的错误类型。
顺便说一句,我已经在最新的TypeScript Playground上检查了上面的代码
结果证明在TypeScript@2.1中引入了一项改变,打破了这种模式。此处描述了整个重大变化。
一般来说,即使按照这个方向走似乎也太复杂/错误了。
拥有自己的错误对象并保留一些原始Error属性可能更好:
class CustomError {
originalError: Error;
constructor(originalError?: Error) {
if (originalError) {
this.originalError = originalError
}
}
}
class SpecificError extends CustomError {}
const error = new SpecificError(new Error('test'));
console.log(error instanceof CustomError); // true
console.log(error instanceof SpecificError); // true
Run Code Online (Sandbox Code Playgroud)