2017-04-11 101 views
0

我想定義一個回調函數的確切參數,在我註冊中間件的具體情況中。中間件有三個參數(reqreqnext),因此我的界面看起來是這樣的:回調接口

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

它簡化類:

class Application { 
    protected app; 

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

可悲的是這仍然是允許

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

但是爲什麼?

回答

1

因爲在JavaScript中你可以選擇忽略參數。

例如,讓我們說,我想添加一箇中間件,如果它達到這個會拋出:

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

由於ARG遊戲不使用沒有必要給他們,這工作得很好:

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

這是官方文檔,說同樣的事情:https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#optional-parameters-in-callbacks – y2bd

+0

這就是不幸...但好。謝謝 :) – nehalist