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

如何让自定义Prisma查询函数返回正确的关联类型?

解决Prisma自定义查询函数的类型推断问题

问题出在直接使用Prisma.UserFindFirstArgs作为参数类型时,TypeScript无法关联传入的include/select配置与返回类型。要实现和原生prisma.user.findFirst一致的类型推断,只需给函数添加泛型,复用Prisma内置的类型工具即可:

修改后的函数代码:

import { Prisma } from '@prisma/client';
import prisma from './path-to-your-prisma-instance';

export async function retrieveUser<T extends Prisma.UserFindFirstArgs>(
  userConditions: T
): Promise<Prisma.UserGetPayload<T>> {
  return await prisma.user.findFirst(userConditions);
}

调用时,TypeScript会自动根据传入的配置推断返回类型:

const user = await retrieveUser({ include: { bar: true } });
// 此时user.bar的类型会被正确识别,不再报错

原理说明:

  • 泛型T extends Prisma.UserFindFirstArgs约束参数必须符合UserFindFirstArgs的结构,同时保留传入的具体配置细节
  • Prisma.UserGetPayload<T>是Prisma提供的工具类型,它会根据T中的include/select等配置,生成对应的用户实体类型,完全复用Prisma自动生成的类型系统,无需硬编码任何字段或关联关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:05:54