类型'string'的表达式不能用于索引类型'Request '"/>
类型'string'的表达式不能用于索引类型'Request '
我正在尝试创建一个中间件来验证请求中的输入数据。
export function validator(schema: Joi.ObjectSchema, key: string) {
return function (req: Request, res: Response, next: NextFunction): void {
try {
Joi.assert(req[key], schema);
next();
} catch (error) {
console.log(error);
throw new Error(error);
}
};
}
但是req[key]
抛出以下错误:
元素隐式地具有'any'类型,因为类型'string'的表达式不能用于索引类型'Request'。在“请求”类型上找不到带有“字符串”类型参数的索引签名。
我发现类似问题的其他解决方案包括在其自己的代码中的接口。我不明白为什么会出现此错误以及如何解决此问题?
此外,以下代码也来自express
的类型定义文件。
interface Request<P extends core.Params = core.ParamsDictionary, ResBody = any, ReqBody = any, ReqQuery = core.Query> extends core.Request<P, ResBody, ReqBody, ReqQuery> { }
以上定义是什么意思?
回答如下:将key: string
的定义更改为validator
是有效的。
更多推荐
类型'string'的表达式不能用于索引类型'Request '
发布评论