如何调整TypeScript类型推断代码以规避no-explicit-any规则?
解决TypeScript类型推断中no-explicit-any规则报错的替代方案
你可以用unknown替代any来规避规则报错,同时不影响类型推断的效果。修改后的代码如下:
export type InferSomething<T> = T extends (...args: unknown[]) => Promise<infer U> ? U : never;
为什么这个方案可行?
unknown是TypeScript中更安全的顶层类型,不会像any那样绕过类型检查,完全符合no-explicit-any规则的设计初衷。- 这里我们只需要匹配任意参数列表的函数,
unknown[]足以覆盖所有可能的参数类型组合,依然能正确推断出Promise包裹的返回类型U。
验证示例
假设有如下异步函数:
async function getUserInfo(userId: number): Promise<{ name: string; age: number }> { return { name: "Alice", age: 30 }; }
使用修改后的InferSomething:
type UserInfo = InferSomething<typeof getUserInfo>; // 类型将被正确推断为 { name: string; age: number }
这个方案无需禁用任何ESLint规则,既保持了类型推断的正确性,也遵循了TypeScript的类型安全规范。
内容的提问来源于stack exchange,提问作者Page not found
相关产品推荐
相关产品推荐

