【发布时间】:2021-05-29 19:35:59
【问题描述】:
我在我的应用程序中使用了express 和passport,在这两个包中,Request 接口下都有一个user 属性。目前,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;
}
我知道这是因为接口不匹配,但我该如何克服呢?欢迎任何帮助。非常感谢!
【问题讨论】:
-
您找到解决方案了吗?有同样的问题。
标签: javascript node.js typescript express