有没有一种方法可以在TypeScript> = 3.3中扩展Error
,使其可以与instanceof
一起正常工作?
class MyError extends Error {
constructor(
message: string,
public readonly details: string
) { super(message) }
}
try {
throw new MyError('some message', 'some details')
} catch (e) {
console.log(e.message) // Ok
console.log(e.details) // Ok
console.log(e instanceof MyError) // Wrong, prints false
}
答案 0 :(得分:1)
感谢@moronator,您必须添加魔术线
class MyError extends Error {
constructor(
message: string,
public readonly details: string
) {
super(message)
// This line
Object.setPrototypeOf(this, MyError.prototype)
}
}
try {
throw new MyError('some message', 'some details')
} catch (e) {
console.log(e.message) // Ok
console.log(e.details) // Ok
console.log(e instanceof MyError) // Works
}