我想定义回调函数的确切参数,在我的特定情况下用于注册中间件。中间件有三个参数(req
,req
和next
),因此我的界面如下所示:
interface MiddlewareInterface {
(req, res, next): void
}
它的简化类:
class Application {
protected app;
registerMiddleware(callback: MiddlewareInterface): void {
this.app.use(callback);
}
}
可悲的是,这仍然是允许的
registerMiddleware(() => { /* ... */ });
但为什么?
答案 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!");
});