TS调用Express中间件报Unsafe call of an any typed value警告如何解决
问题解决方法
原因说明
该警告是因为TypeScript无法自动推断checkBrowserSupport函数的返回值为合法的Express中间件类型,误将返回值判定为any类型,所以需要给该函数添加明确的返回类型约束。
具体解决方案
你需要给checkBrowserSupport函数添加Express内置的RequestHandler类型作为返回值,该类型是官方定义的标准Express中间件类型,已经内置了req、res、next参数的类型定义。
- 首先从express包中导入类型:
import type { RequestHandler } from "express";
- 修改函数定义,添加返回类型:
export function checkBrowserSupport( browserStatuses: string[], supportedBrowsers: ISupportedBrowser[], paths: IPath ): RequestHandler { return (req, res, next) => { // 原有中间件逻辑 }; }
额外说明
添加RequestHandler类型后,你不需要再给返回的匿名函数的req、res、next参数重复标注类型,TypeScript会自动继承类型约束,同时完全兼容同步、异步两种中间件写法。如果修改后仍然有警告,检查项目devDependencies中是否已经正确安装@types/express类型依赖包。
内容的提问来源于stack exchange,提问作者bonum_cete
相关产品推荐
相关产品推荐

