Ant*_*ina 6 express typescript
在我们的应用程序中,我们向 app.locals 添加了很多配置对象,这些对象在我们的中间件中使用。
const app = Express();
app.locals = {
someConfig: config
}
Run Code Online (Sandbox Code Playgroud)
目前,我们为 Request 对象提供了自定义类型,可以正常工作
declare namespace Express {
export interface Request {
featureFlags?: FeatureFlag;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道locals来自 Express.Application 所以我尝试了这个,但它不起作用。
declare namespace Express {
export interface Application {
locals: {
someConfig: config;
};
}
export interface Request {
featureFlags?: FeatureFlag;
}
}
Run Code Online (Sandbox Code Playgroud)
有人成功将类型添加到 app.locals 吗?
小智 -2
您可以转到node_modules/@types/express-serve-static-core/index.d.ts中的原始文件声明,而不是使用新的声明文件。并搜索应用程序界面。诀窍是在该接口上定义另一个属性,并且所有路由都可以访问该属性,类似于 locals 属性。
export interface Application<
Locals extends Record<string, any> = Record<string, any>
> extends EventEmitter, IRouter, Express.Application {
//Make sure to keep all the others properties on the interface
locals: Locals
db: mongoDb.Db //Here is the db key I've added, and all my routes can access it, just like the locals property.
];
}Run Code Online (Sandbox Code Playgroud)
app.db ="whatever you need"现在,您可以使用所有自动完成功能为该属性分配一个值。在您的路由处理程序或中间件中,您可以使用req.app.db.
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |