You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Prisma与TypeScript时,如何修复‘Element implicitly has an any type’错误?

解决Prisma + TypeScript动态模型查询的类型错误

你的问题出在TypeScript无法确认传入的model字符串是PrismaClient上存在的合法模型名称,所以索引时会抛出隐式any类型的错误。以下是具体的修复方案:

步骤1:定义合法的模型名称类型

首先从你的PrismaClient实例中提取所有非内置方法(即排除$开头的属性)的键,作为合法的模型名称类型:

// 假设你的PrismaClient实例名为prisma
type PrismaModelName = Exclude<keyof typeof prisma, `$${string}`>;

步骤2:修改函数的类型约束

将model参数的类型从宽泛的string改为上述定义的PrismaModelName,同时让函数返回值自动对应模型的正确类型:

export async function getAll<T extends PrismaModelName>(model: T) {
  const results = await prisma[model].findMany();
  await prisma.$disconnect();
  // 自动推导返回值类型,避免any
  return results as Awaited<ReturnType<typeof prisma[T]['findMany']>>;
}

额外提示

注意:每次调用函数都执行prisma.$disconnect()不是最佳实践。PrismaClient会自动管理连接池,建议在应用启动时初始化一次客户端,直到应用关闭时再断开连接,而不是每次查询后都断开。

内容的提问来源于stack exchange,提问作者Steeve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:57:38