gpt4 book ai didi

javascript - Express - 'user' 的所有声明必须具有相同的修饰符

转载 作者:行者123 更新时间:2023-12-04 17:20:36 27 4
gpt4 key购买 nike

我正在使用 expresspassport在我的应用程序中,在这两个包中,都有一个 user Request 下的属性界面。目前,express有一个 user属性,但在请求对象中没有附加其他属性,例如 req.user .我正在尝试为 express 进行声明合并(不确定这是否是正确的术语),以便告诉 typescript Express.Request.user有一个 id附加到它的属性如下:

declare namespace Express {
export interface Request {
user: {
id: string
}
}
}
同时还有 passport有一个 user属性,但值为 Express.User .当我在上面进行该声明合并时,我收到一条错误消息 All declarations of 'user' must have identical modifiers.这是 passport 的声明文件.
interface User {}

interface Request {
authInfo?: AuthInfo;
user?: User;

// These declarations are merged into express's Request type
login(user: User, done: (err: any) => void): void;
login(user: User, options: any, done: (err: any) => void): void;
logIn(user: User, done: (err: any) => void): void;
logIn(user: User, options: any, done: (err: any) => void): void;

logout(): void;
logOut(): void;

isAuthenticated(): this is AuthenticatedRequest;
isUnauthenticated(): this is UnauthenticatedRequest;
}
我知道这是因为接口(interface)不匹配,但是我该如何克服呢?欢迎任何帮助。非常感谢!

最佳答案

我遇到了同样的问题 - 我设法通过将属性直接添加到 User 来让它工作。接口(interface)而不是 Request.user -
@types/express/index.d.ts

declare global {
namespace Express {
interface User {
userId: number;
name: string;
email: string;
}
}
}

关于javascript - Express - 'user' 的所有声明必须具有相同的修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66402461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com