如何扩展Error类?

这是我的代码:

let errorBadRequest = new Error("Bad request"); res.statusCode = 400; errorBadRequest.errors = err.details.reduce(function(prev, current) { prev[current.path] = current.message; return prev; }, {}); throw errorBadRequest; 

我想在错误实例中扩展error属性,但是tsc表示joi-utils.ts(21,23): error TS2339: Property 'errors' does not exist on type 'Error'.

errors的结构是{fieldname: fieldmsg} ,这是根据我的joi请求模式来决定的。

如何解决从打字稿编译器的错误? 我想我需要声明一个接口并指定属性。

属性“错误”在types“错误”上不存在。

创build一个名为error-extension.d.ts的文件,并具有以下内容:

 interface Error { errors: Error; } 

更多: https : //basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html

我发现初始化Error类时,实际上在Error没有Error 。 它应该做一个接口,并设置errors的选项。

这是我的解决scheme:

 interface IJoiErrorException extends NodeJS.ErrnoException { errors?: Object; } const errorBadRequest: IJoiErrorException = new Error("Bad request");