如何扩展错误 class?
How do I extend the Error class?
这是我的代码:
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 request schema来决定。
如何解决打字稿编译器的错误?我想我需要声明一个接口并指定属性。
Property 'errors' does not exist on type 'Error'.
创建一个名为 error-extension.d.ts
的文件并包含以下内容:
interface Error {
errors: Error;
}
更多:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html
我在 Error
class 的首字母缩写时发现,实际上 Error
中没有 errors
。它应该制作一个界面并将errors
设置为选项。
这是我的解决方案:
interface IJoiErrorException extends NodeJS.ErrnoException {
errors?: Object;
}
const errorBadRequest: IJoiErrorException = new Error("Bad request");
这是我的代码:
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 request schema来决定。
如何解决打字稿编译器的错误?我想我需要声明一个接口并指定属性。
Property 'errors' does not exist on type 'Error'.
创建一个名为 error-extension.d.ts
的文件并包含以下内容:
interface Error {
errors: Error;
}
更多:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html
我在 Error
class 的首字母缩写时发现,实际上 Error
中没有 errors
。它应该制作一个界面并将errors
设置为选项。
这是我的解决方案:
interface IJoiErrorException extends NodeJS.ErrnoException {
errors?: Object;
}
const errorBadRequest: IJoiErrorException = new Error("Bad request");