回调接口

时间:2017-04-11 21:05:15

标签: typescript

我想定义回调函数的确切参数,在我的特定情况下用于注册中间件。中间件有三个参数(reqreqnext),因此我的界面如下所示:

interface MiddlewareInterface {
  (req, res, next): void
}

它的简化类:

class Application {
    protected app;

    registerMiddleware(callback: MiddlewareInterface): void {
        this.app.use(callback);
    }
}

可悲的是,这仍然是允许的

registerMiddleware(() => { /* ... */ });

但为什么?

1 个答案:

答案 0 :(得分:1)

因为在javascript中你可以选择忽略参数。

例如,假设我想添加一个中间件,如果达到它将抛出:

registerMiddleware((req, res, next) => {
    throw new Error("Should not have reached me!");
});

由于不使用args,所以不需要它们,这很好用:

registerMiddleware(() => {
    throw new Error("Should not have reached me!");
});