2017-04-11 9 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!"); 
}); 

引数が彼らに必要はありません使用されていないように、これはうまく動作します:

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

関連する問題