请教:TypeScript中login函数的req: IReq<IloginReq>参数含义
关于参数声明
req: IReq<IloginReq> 的含义 咱们一步步拆解这个类型声明的意思:
先看
IReq泛型接口IReq<T = void>是一个泛型接口,它继承了e.Request(应该是Express框架的请求对象类型),同时重写了body属性的类型——把body的类型指定为泛型参数T,默认情况下T是void(也就是请求体无内容)。再看
IloginReq接口IloginReq是一个普通接口,明确规定了登录请求体必须包含的字段:
email:字符串类型,对应登录用的邮箱password:字符串类型,对应登录用的密码
- 合起来看
IReq<IloginReq>
当把IloginReq作为泛型参数传入IReq后,这个类型就表示:
- 这个
req参数是一个完整的Express请求对象,拥有原生Request的所有属性和方法(比如params、query、headers这些); - 它的
body属性必须严格符合IloginReq的结构——也就是必须包含email和password两个字符串类型的字段。这样在代码里解构req.body时,TypeScript会自动做类型校验,避免你误用不存在的字段或者传入错误类型的值。
内容的提问来源于stack exchange,提问作者cloudpg07
相关产品推荐
相关产品推荐

