私はRestifyを使って作業しています(Restifyが分からない場合はExpress.jsとみなします)。オブジェクトを要求オブジェクトにアタッチしたいので、次のルート。クラスオブジェクトの型定義を拡張する
より具体的な例:req.user = data;
typescriptですが、明らかに私に叫んされ、このラインで
export const validate: ValidateFn = async (req: Request, res: Response, next: Next): Promise<void> => {
// Validate and parse token from headers
const authHeader: string = req.header('authorization', null);
const parsedToken: string = parseBearerToken(authHeader);
if (parsedToken == null) { return next(new errors.InvalidCredentialsError('Missing authorization')); }
// Verify token
try {
const data: {} = jwt.verify(parsedToken, config.apiServer.jwtSecret);
req.user = data;
} catch (err) {
return next(new errors.NotAuthorizedError('Invalid authentication'));
}
return next();
};
、与えられたリクエストオブジェクトにuser
と呼ばれるフィールドがないので。私は理想的には、名前を変更しても同じ名前で利用できるように、user: {};
の名前を付けて、Request
の定義を単純に拡張できると考えました。
また、新しいタイプ(RequestValidated
など)を作成しても問題はありませんが、ライブラリの名前空間全体(追加のインポートなし)で使用できるようにしたいと思います。私はそれがために利用可能であるように、(Request
オブジェクトに添付カスタムプロパティのように)私のカスタム変更を加えるために、サードパーティのライブラリの定義を拡張することができますどのように
を:だから、私の質問は一つの文章にまとめ
オリジナルの入力ファイルを編集することなく同じ名前空間を使用することができます(これは完全に型指定されたレポの一部です)。
わかりましたが、私はRequestインターフェイスを拡張する必要がありましたが、それは必要ではなく、定義されたプロパティが追加されました。完璧!どうもありがとう。 – kentor