reqはおそらく "express"パッケージからのRequest型であり、そこにユーザーは存在しません。要求を独自のルータハンドラで拡張するか、任意のオブジェクトまたはオブジェクトをタイプするためにそれをキャストする必要があります。
はまた、あなたはまた、(代わりにExpressJsにルータ機能を拡張する)、独自のハンドララッパーを作ることができるモジュール/グローバル増強
declare module "express" { // declare module "express-serve-static-core"
export interface Request {
user: any
}
}
を使用することができres.json(req['user'])
またはres.json((<any>req).user)
を試してみてください。
import * as express from 'express';
interface IUserRequest extends express.Request {
user: any
}
function myHandler(handler: (req: IUserRequest, res: express.Response, next?: express.NextFunction) => any) {
return (req: express.Request, res: express.Response, next: express.NextFunction) => {
try {
validateUser(req, res, (err) => { // your validateUser handler that makes a user property in express Request
if(err)
throw err;
let requestWrapper: IUserRequest = <IUserRequest>req;
handler(requestWrapper, res, next);
})
}
catch (ex) {
next(ex);
}
}
}
let app = express();
// init stuff for express but this.validateUser handler is not needed
app.use('/testuser', myHandler((req, res) => {
res.json(req.user);
}));
おそらくタイプが欠けているので、req - fast fix '(req:any、res:any)=> ...'そうでなければ、いくつかの[express for type](https://stackoverflow.com)を使う必要があります。/questions/36037977/how-to-install-express-in-typings) –