私はFlowを使用してnodeJSアプリケーションを構築していますが、私が触れている他のフィールド(.userや.sessionなど)に対応するexpress $ Requestのデフォルトの注釈アノテーションを拡張する必要があります。フロー内のエクスプレスリクエストクラスを拡張する
残念ながら、私がこれを行い、この新しいリクエストタイプを受け入れるミドルウェアを作成しようとすると、フローが狂ってしまい、何が間違っているのか分かりません。
フロー型指定されたから急行の元のコードは次のとおりです。
declare class express$Request extends http$IncomingMessage mixins express$RequestResponseBase {
....
}
declare type express$Middleware =
((req: express$Request, res: express$Response, next: express$NextFunction) => mixed) |
((error: ?Error, req: express$Request, res: express$Response, next: express$NextFunction) => mixed);
ので、私はちょうど私のミドルウェアのすべての権利、新しいプロパティを操作する必要があり、その後急行$要求を拡張し、と思いましたか?
declare class web$Request extends express$Request {
user: any,
isAuthenticated(): boolean,
session: {
loginForwardUrl: ?string,
},
}
const authenticationMiddleware: express$Middleware = (
req: web$Request, res, next
): mixed => {
if (req.isAuthenticated()) {
return next();
}
req.session.loginForwardUrl = req.originalUrl;
return res.redirect('/auth/login/google');
}
残念ながら、これは超複雑なエラーが得られます。
function
This type is incompatible with
union: function type(s): web/src/index.js:113
Member 1:
function type: flow-typed/npm/express_v4.x.x.js:97
Error:
web$Request: web/src/index.js:114
This type is incompatible with the expected param type of
express$Request: flow-typed/npm/express_v4.x.x.js:97
Member 2:
function type: flow-typed/npm/express_v4.x.x.js:98
Error:
web$Request: web/src/index.js:114
This type is incompatible with an argument type of
null: flow-typed/npm/express_v4.x.x.js:98
誰もがここで起こって、どのようにそれを修正する何説明することができますか?
ありがとうございました!
OOFを、残忍な - Flowは、この優れたサポートすることを望みます。ありがとうございました! – user358829