【发布时间】:2020-11-15 23:05:12
【问题描述】:
我想为 Request 类型添加一个属性,因此我创建了一个文件夹 @types/express 并在此文件夹中添加了包含此内容的文件 index.d.ts。
namespace Express {
interface Request {
user: number;
}
}
在 VSCode 中,当我引用 req.user 时,错误消失了,它甚至显示 user 的类型为 number
screenshot that shows that "user" property on the "Request" object is treated right
但是当我启动服务器时,我看到了这样的错误:
/home/myself/web/my-server/node_modules/ts-node/src/index.ts:434
return new TSError(diagnosticText, diagnosticCodes)
^
TSError: ⨯ Unable to compile TypeScript:
src/app.ts:46:7 - error TS2339: Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs>'.
46 req.user;
~~~~
at createTSError (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:434:12)
at reportTSError (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:438:19)
at getOutput (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:578:36)
at Object.compile (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:775:32)
at Module.m._compile (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:858:43)
at Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Object.require.extensions.<computed> [as .ts] (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:861:12)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
如果有任何关于如何解决它的想法,我将不胜感激。
附言我对express-session 模块做了同样的事情,并在Session 接口中添加了一个counter 属性,它可以完美运行
【问题讨论】:
标签: node.js typescript express definitelytyped