我有一些express
中间件,正在用Typescript编写的快速应用程序中使用。这些中间件通常会为Request
对象添加一些属性,因此,为了使Typescript能够编译,我正在使用:
declare global {
namespace Express {
export interface Request {
client: Client;
}
}
}
要将client
属性添加到快速Request
对象。问题在于这会将client
属性添加到我的所有Request
对象中,无论添加什么中间件都没有问题,即使没有添加中间件,当我访问属性时,Typescript编译器也会非常满意。
经过大量搜索之后,我只能找到一些示例,这些示例说明如何全局(而不是基于中间件)向Request
对象添加属性。是否可以根据添加的中间件向Request
对象添加属性?因此,当尝试访问未添加适当的中间件的属性时,会出现错误。
如果没有,通常用Typescript在express中如何处理,只是对属性进行空检查以确保它们存在?这是打字稿还是明示限制?