如何表达Error的子类类型

时间:2018-09-13 02:31:30

标签: typescript-typings

我正在尝试为软件包trace-error键入文件。 基本上,它可以创建如下所示的链接错误:

const downStreamError = new TraceError("Some message", upStreamError)

这就是我的目的:

declare module "trace-error" {
  class TraceError implements Error {
    name: string;
    message: string;
    constructor(message: string, ...errors: Error[]);
  }

  export default TraceError;
}

但是我遇到了这个错误:

Type 'TraceError' has no properties in common with type 'Error'.

我很确定这是因为constructor不在接口Error中。

我也尝试使用函数声明:

declare module "trace-error" {
  function TraceError(message: string, ...errors: Error[]): Error;

  export default TraceError;
}

但是随后我在客户端代码中得到以下错误(出于我理解的原因。):

[ts] Only a void function can be called with the 'new' keyword.

因此,我坚持如何在问题开头描述的用例中编写类型。任何见识将不胜感激。

编辑:快速修复

以下是我现在使用的快速修复程序:

declare module "trace-error" {
  class TraceError {
    constructor(message: string, ...errors: Error[]);
  }

  export default TraceError;
}

编译器不再抱怨,但是删除了对类Error的引用。

0 个答案:

没有答案