覆盖 Express.js 和 Passport 用户类型 (TypeScript)

Joh*_*hnJ 8 express typescript passport.js

我正在使用 Express.js 和 Passport 来开发我的网络应用程序。最近更新项目的依赖项后,我收到此错误:

FILE NAME.ts:LINE NUMBER:CHAR NUMBER - error TS2339: Property 'METHOD_NAME' does not exist on type 'User'.

LINE NUMBER           res.json(await req.user.METHOD_NAME());
Run Code Online (Sandbox Code Playgroud)
FILE NAME.ts:LINE NUMBER:CHAR NUMBER - error TS2322: Type 'Express.User' is not assignable to type 'import("models/User").default'.

LINE_NUMBER         const user: User = req.user;
Run Code Online (Sandbox Code Playgroud)

我的模型看起来像:

FILE NAME.ts:LINE NUMBER:CHAR NUMBER - error TS2339: Property 'METHOD_NAME' does not exist on type 'User'.

LINE NUMBER           res.json(await req.user.METHOD_NAME());
Run Code Online (Sandbox Code Playgroud)

我尝试覆盖请求定义,但它不起作用:

FILE NAME.ts:LINE NUMBER:CHAR NUMBER - error TS2322: Type 'Express.User' is not assignable to type 'import("models/User").default'.

LINE_NUMBER         const user: User = req.user;
Run Code Online (Sandbox Code Playgroud)

这些是我的一些依赖项:

  "dependencies": {
    "@types/express-session": "^1.15.13",
    "@types/passport": "^1.0.0",
    "@types/passport-local": "^1.0.33",
    "@types/sequelize": "^4.28.4",
    "express": "^4.17.1",
    "express-fileupload": "^1.2.0",
    "express-session": "^1.16.2",
    "node-fetch": "^2.1.2",
    "passport": "^0.4.0",
    "passport-local": "^1.0.0",
    "sequelize": "^6.6.2",
    "sequelize-cli": "^6.2.0",
  },
  "devDependencies": {
    "@types/express": "^4.17.1",
    "@types/express-serve-static-core": "^4.17.1",
    "@types/node": "^15.12.2",
    "@types/node-fetch": "^2.1.1",
    "ts-node": "^10.0.0",
    "tsconfig-paths": "^3.4.0",
    "tslint": "^6.1.3",
    "typescript": "^4.3.2"
  }
Run Code Online (Sandbox Code Playgroud)

我认为正确的方法是继续通过.d.ts文件覆盖定义,但我无法做到正确。