有人能解释一下为什么下面代码的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
错误对象有什么特别的地方吗?我想做我自己的错误类型,我可以检查。
顺便说一下,我已经在最新的TypeScript Playground
最佳答案
原来[email protected]中引入了一个改变,打破了这种模式。整个断裂变化被描述为here。
一般来说,它似乎太复杂/错误,甚至与这个方向。
最好有自己的错误对象并保留一些原始的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