EnforceAjax的类型不能分配给中间件类型

时间:2019-03-25 17:47:22

标签: javascript typescript

我有以下类和接口:

export class EnforceAjax implements Middleware {
  public handle(client: Client) {
    return client.ajax === true
  }
}

export interface Middleware {
  handle?(client: Client, ...args: any[]): boolean | Response
}

当我尝试执行以下命令时:

Router.group('/api', { middleware: [EnforceAjax] }, async () => require('./api'))


export interface RouterOptions {
  middleware?: (Middleware | string)[]
}

public static group(routePrefix: string, options: RouterOptions, callback: Function): void

我收到以下错误:

  

类型'typeof EnforceAjax'不可分配给'字符串|中间件”。     'typeof EnforceAjax'类型的值与'Middleware'类型没有共同的属性。你是想打电话吗?

虽然我添加了new关键字,但错误消失了,但是我不想将类的实例作为值传递给数组。

1 个答案:

答案 0 :(得分:1)

然后输入middleware作为中间件构造函数:

 export interface RouterOptions {
   middleware?: ({ new(): Middleware; } | string)[]
 }

不确定为什么还是要上课。