Javascript 如何在typescript中实现自定义错误类?
在过去的三年里,我一直在做快速开发,最近我改用打字 在Swift中,一个类型为NSError的错误,它为我们提供了一些属性 在JavaScript中,错误是任意的 为什么错误是有意义的?如何创建具有某些属性的自定义类并在整个项目中使用它Javascript 如何在typescript中实现自定义错误类?,javascript,typescript,Javascript,Typescript,在过去的三年里,我一直在做快速开发,最近我改用打字 在Swift中,一个类型为NSError的错误,它为我们提供了一些属性 在JavaScript中,错误是任意的 为什么错误是有意义的?如何创建具有某些属性的自定义类并在整个项目中使用它 试试看{ const decodedResult=解码(令牌) //在要在模型中使用的标题中添加userId。 req.headers.userId=decodedResult.paylod.id 下一个() }捕获(错误){ console.log(错误) 新
试试看{
const decodedResult=解码(令牌)
//在要在模型中使用的标题中添加userId。
req.headers.userId=decodedResult.paylod.id
下一个()
}捕获(错误){
console.log(错误)
新errorController(401,“需要身份验证”,res)
}
现在这里的错误对象是any类型。我希望它是强类型的。这是因为您可以
抛出Javascript中的任何内容:
throw 1;
由于任何深度嵌套的代码都可能在某个地方抛出某些东西,Typescript不可能正确地键入它,这就是为什么“error”具有any
类型
但是,Typeguards可帮助您缩小特定错误类型的范围:
class CustomError extends Error {
constructor(code: number, message: string) {
super(message);
this.code = code;
}
}
try {
throw new CustomError(404, "Not Found");
} catch(error) {
if(!(error instanceof CustomError))
throw error;
console.log(error.code); // correctly typed here
}
Any是我们在编写时不知道的变量类型
申请书。这些值可能来自动态内容,例如
用户或第三方库。在这些情况下,我们希望选择退出
类型检查并让值通过编译时检查。到
若要这样做,我们会给它们贴上任何类型的标签
您可以在typescript中扩展Error
类来创建自定义错误处理程序
class MyError extends Error {
constructor(m: string) {
super(m);
}
anyFunction() {
return "Hello World " ;
}
}
try {
const decodedResult = decode(token)
// Adding userId in the headers to use in the models.
req.headers.userId = decodedResult.paylod.id
next()
} catch (error) {
console.log(error)
throw new MyError() // pass arguments of constructor if any
}
请参见中提到的,您可以抛出类似newerror()
(以及任何其他内容,因为它将在最后传输到javascirpt中)
因此,您可以创建一个新类,例如
export class MySpecificError extends Error
您可以在方法中加入catch,并在catch
子句中使用catch
但是,这只适用于您自己编写的代码可能重复的代码
export class MySpecificError extends Error