tha*_*uy_ 8 javascript node.js express typescript
我正在我的应用程序中使用express和passport,在这两个包中,界面下都有一个user属性Request。目前,在请求对象中express具有一个user属性,但没有附加其他属性,例如req.user。我正在尝试对express进行声明合并(不太确定这是否是正确的术语),以便告诉打字稿附加了Express.Request.user一个id属性,如下所示:
declare namespace Express {
export interface Request {
user: {
id: string
}
}
}
Run Code Online (Sandbox Code Playgroud)
同时也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;
}
Run Code Online (Sandbox Code Playgroud)
我知道这是因为接口不匹配,但如何克服这个问题?欢迎任何帮助。非常感谢!
我遇到了同样的问题 - 我设法通过直接向User界面添加属性而不是Request.user-
在@types/express/index.d.ts
declare global {
namespace Express {
interface User {
userId: number;
name: string;
email: string;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15416 次 |
| 最近记录: |