TypeScript中如何为Prisma事务客户端指定类型?
Prisma事务客户端的TypeScript类型指定方案
你可以通过以下两种方式为事务客户端指定正确的TypeScript类型,避免使用any:
方法1:使用Prisma内置的TransactionClient类型
这是最直接的方案,适用于未对PrismaClient做自定义扩展的场景:
首先导入类型:
import { Prisma } from '@prisma/client';
然后在函数中指定类型:
function someFunction(tx: Prisma.TransactionClient) { // 这里可以安全地使用tx执行数据库操作,比如: await tx.user.create({ data: { name: 'test' } }); }
事务中调用函数的代码保持不变:
await prisma.$transaction(async (tx) => { someFunction(tx); });
方法2:基于自定义PrismaClient实例推导类型
如果你的PrismaClient通过$extends添加了自定义方法,可以通过typeof推导类型,保留扩展的类型定义:
import { prisma } from './your-prisma-instance-path'; // 推导事务客户端类型 type TransactionClient = typeof prisma; function someFunction(tx: TransactionClient) { // 这里既可以使用Prisma原生方法,也能调用你扩展的自定义方法 }
注:这种推导方式同样适用于未扩展的PrismaClient,是更贴合项目实际实例的类型选择。
内容的提问来源于stack exchange,提问作者StykPohlavsson
相关产品推荐
相关产品推荐

