我知道有很多关于这个的主题,但我花了过去2个小时搜索,没有任何帮助。
你好,我有一个非常困难的时间试图扩展会话对象的express-session在typescript。
我有以下文件
src/types/express/index.d.ts
import account_document from "../account/account-document"
import xcsrftoken from "../data-types/x-csrf-token"
declare global {
namespace Express {
interface Request {
authenticated_user: account_document
}
interface SessionData {
xcsrftoken: xcsrftoken
}
}
}
src/types/express-session/index.d.ts
import xcsrftoken from "../data-types/x-csrf-token";
declare module "express-session" {
interface SessionData {
xcsrftoken: xcsrftoken
}
}
tsconfig.json
{
"compilerOptions": {
"target": "ES2017",
"module": "commonjs",
"strict": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"esModuleInterop": true,
"typeRoots": ["./src/types/express", "./src/types/express-session", "./node_modules/@types"]
},
"exclude": ["node_modules"]
}
但是下面的脚本返回Property 'xcsrftoken' does not exist on type 'Session & Partial<SessionData>'.
if (!req.session.xcsrftoken) {
req.session.xcsrftoken = {};
}
我该如何解决这个问题?
1条答案
按热度按时间hyrbngr71#
我解决了这个问题。你基本上必须创建一个主文件夹,每个包的文件夹和每个包文件夹的index.d.ts文件。然后你想把你的代码扩展包类型的index.d.ts文件。
例如:
然后像这样将libs文件夹添加到typeRoot