【发布时间】:2018-07-24 12:14:40
【问题描述】:
我正在尝试使用 Typescript 构建具有 express 和 express-ws 的节点服务器。
我想在我的应用程序中使用会话。所以我使用了express-session。
下面是伪代码:
import * as session from 'express-session';
import * as express from 'express'
import * as expressWs from 'express-ws'
const sessionParser = session({
saveUninitialized: false,
secret: '$eCuRiTy',
resave: false
});
let expressWsApp = expressWs(expressApp, webServer, {
wsOptions : {
verifyClient : (info, done) => {
sessionParser(info.req, {}, () => {
done(info.req.session.userId);
});
}
}
}).app
我收到以下错误。
Argument of type 'IncomingMessage' is not assignable to parameter of type 'Request' in
sessionParser(info.req, {}, () => {...
现在的问题是,sessionParser 要求第一个参数的类型为 express.Request。实际上express.Request 是http.IncomingMessage 的孩子。
那么如何将父类类型转换为子类?
知道如何解决这个问题吗?
或如何在打字稿中使用express-session 的会话
如果我替换
import * as session from 'express-session';
与
const session = require('express-session');
它正在工作。但是如何使用import 和类型检查来做到这一点?
【问题讨论】:
-
你可以为这个包安装类型。
npm i @types/express-session -
我已经添加了打字,这就是问题来了,不打字不会出错。
标签: typescript express websocket