如何扩展错误 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");