gpt4 book ai didi

typescript - 如何在 TypeScript 中扩展 Error 类

转载 作者:搜寻专家 更新时间:2023-10-30 21:11:39 25 4
gpt4 key购买 nike

有没有办法在 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
}

最佳答案

感谢@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
}

关于typescript - 如何在 TypeScript 中扩展 Error 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55108961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com