如何在参数中键入 prisma 对象
how to type prisma objects in parameters
我有一个需要 prisma 模型/实例的函数
我如何实际键入此函数签名?我想要的是从 prisma.SOMETABLE.find
返回的类型,例如:
const item = await prisma.nftCollection.findFirst()
下面是简短的代码片段。
import { Prisma, PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export class Buyer {
async findColl() {
const item = await prisma.nftCollection.findFirst()
await this.buyItem(item)
}
// this is the param i want to type
async buyItem(item: SOMETYPE) {
clog.info('todo - buy', item)
}
}
在@prisma/client(见node_modules/.prisma/client/index.d.ts) 您会找到您在 Prisma 模式中定义的模型类型。假设 Item
是您的模型。
因此您可以执行以下操作:
import { Prisma, PrismaClient, Item } from '@prisma/client';
const prisma = new PrismaClient();
export class Buyer {
async findColl(): Promise<void> {
const item = await prisma.nftCollection.findFirst();
await this.buyItem(item);
}
async buyItem(item: Item | null): Promise<void> {
clog.info('todo - buy', item);
}
}
Item
是一致性类型(从 @prisma/client
导入)并且 buyItem
接受参数 Item | null
因为 findFirst
returns 一个Item
或 null
。当然,您可以在调用 buyItem
之前检查 item
是否为 null
,那么它将只是 item: Item
.
如果您将选择集添加到 findFirst
,您可能需要使用 Partial<Item>
。
编辑: 只需阅读您的 Github link。而不是 Item
使用 collection
也应该没问题。如果找到 type collection { ... }
.
的定义,请检查 node_modules/.prisma/client/index.d.ts
我有一个需要 prisma 模型/实例的函数
我如何实际键入此函数签名?我想要的是从 prisma.SOMETABLE.find
返回的类型,例如:
const item = await prisma.nftCollection.findFirst()
下面是简短的代码片段。
import { Prisma, PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export class Buyer {
async findColl() {
const item = await prisma.nftCollection.findFirst()
await this.buyItem(item)
}
// this is the param i want to type
async buyItem(item: SOMETYPE) {
clog.info('todo - buy', item)
}
}
在@prisma/client(见node_modules/.prisma/client/index.d.ts) 您会找到您在 Prisma 模式中定义的模型类型。假设 Item
是您的模型。
因此您可以执行以下操作:
import { Prisma, PrismaClient, Item } from '@prisma/client';
const prisma = new PrismaClient();
export class Buyer {
async findColl(): Promise<void> {
const item = await prisma.nftCollection.findFirst();
await this.buyItem(item);
}
async buyItem(item: Item | null): Promise<void> {
clog.info('todo - buy', item);
}
}
Item
是一致性类型(从 @prisma/client
导入)并且 buyItem
接受参数 Item | null
因为 findFirst
returns 一个Item
或 null
。当然,您可以在调用 buyItem
之前检查 item
是否为 null
,那么它将只是 item: Item
.
如果您将选择集添加到 findFirst
,您可能需要使用 Partial<Item>
。
编辑: 只需阅读您的 Github link。而不是 Item
使用 collection
也应该没问题。如果找到 type collection { ... }
.