如何扩展Error类?

时间:2016-02-08 02:11:18

标签: node.js interface typescript joi

这是我的代码:

  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请求架构来决定。

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

2 个答案:

答案 0 :(得分:1)

  

财产错误'在类型'错误'。

上不存在

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

interface Error {
    errors: Error;
} 

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

答案 1 :(得分:0)

我在初始化Error课程时发现,实际上它在errors中没有Error。它应该创建一个接口并将errors设置为选项。

这是我的解决方案:

interface IJoiErrorException extends NodeJS.ErrnoException {
  errors?: Object;
}

const errorBadRequest: IJoiErrorException = new Error("Bad request");