有人可以解释为什么下面代码的 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
Error 对象有什么特别之处吗?我想制作我自己的错误类型,我可以检查。
顺便说一句,我已经在最新的 TypeScript Playground 上检查了上面的代码
最佳答案
原来在 TypeScript@2.1 中引入了一个变化打破了这种模式。描述了整个重大变化 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
关于typescript - 继承自错误中断 `instanceof` 检查 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43912118/