【发布时间】:2018-08-24 11:53:40
【问题描述】:
我想使用自定义属性从 Express 框架中简单地扩展 Requestobject:
import express = require('express')
export interface NtlmRequest extends express.Request {
ntlm: NtlmInfo
}
它被用作express.Request 的参数类型。
let app = express();
app.all('*', (request:NtlmRequest, response:Response) => {
console.log(request.ntlm.UserName)
});
app.listen(1243)
NtlmInfo 是另一个接口,它只包含这样的字符串属性:
export interface NtlmInfo { UserName: string [...] }
但这给了我一个请求类型不兼容的错误:
error TS2345: Argument of type '(request: NtlmRequest, response: Response) => void' is not assignable to parameter of type 'RequestHandlerParams'.
Type '(request: NtlmRequest, response: Response) => void' is not assignable to type '(RequestHandler | ErrorRequestHandler)[]'.
Property 'push' is missing in type '(request: NtlmRequest, response: Response) => void'.
无法理解这一点,因为我继承了原始 express.Request 对象并查看了不存在任何 push 属性的 Typing 定义。
安装了以下软件包:
"dependencies": {
"express": "^4.16.2",
"express-ntlm": "^2.2.4"
},
"devDependencies": {
"@types/express": "^4.11.1",
"@types/node": "^9.4.7",
"typescript": "^2.7.2"
}
【问题讨论】:
标签: node.js typescript express typescript-typings