【发布时间】:2021-10-30 14:15:16
【问题描述】:
我将prisma 用于我的所有数据库逻辑,并且我开始依赖于它从下游数据库获取的数据的类型。
目前,我使用预定义的select 字段来确保输入的返回数据完全包含其中的字段。
我被要求添加在调用函数时指定您自己的select 的功能。有没有办法支持这个而不丢失返回数据的类型?
这是我迄今为止一直在做的事情:
const listAllTypes = <T extends Prisma.UserTypeSelect>(select?: T) => {
return select === undefined
? prisma.userType.findMany({ select: { name: true, description: true } })
: prisma.userType.findMany({ select });
};
const test = async () => {
const x = await listAllTypes();
const y = await listAllTypes({ name: true });
};
在这个 sn-p 中,x 和 y 都有一个联合类型。 x 是:{ name: string; description: string; }[] | {}[] 和 y 是 { name: string; description: string; }[] | { name: string; }[]。
有没有办法让xonly{name: string, description: string}的返回类型和yonly{name: string }的返回类型?我希望缩小 select === undefined 就足够了,但似乎还不够。
【问题讨论】:
标签: typescript prisma