如何从Prisma Schema导出模型属性类型?如何在应用中自动获取Prisma模型的属性类型?
自动获取Prisma Schema字段类型的方案
完全不用手动维护类型文件!Prisma本身就自带了自动生成类型的能力,只要利用好它生成的客户端类型,就能轻松拿到单个字段的类型,步骤如下:
第一步:确保生成最新的Prisma Client
每次修改完你的Prisma Schema后,只需要运行这条命令:npx prisma generate这条命令会自动在
node_modules/.prisma/client目录下生成和你的Schema完全同步的TypeScript类型定义,不需要你手动编写任何类型代码。第二步:提取单个字段的类型
从@prisma/client导入生成的模型类型,然后用TypeScript的索引类型语法直接提取字段类型。比如针对你的User模型:// 导入Prisma生成的User类型 import { User } from '@prisma/client'; // 获取email字段的类型,这里会自动推断为string type UserEmailType = User['email']; // 如果之后你把Schema里的email改成可选(比如String?),这个类型会自动变成string | null可选:封装常用字段类型(无需手动维护)
如果你需要在多个地方复用这些字段类型,可以创建一个专门的类型文件,但这个文件只需要基于Prisma生成的类型做导出,完全不用手动修改内容:// src/types/prisma-fields.ts import { User } from '@prisma/client'; export type UserEmail = User['email']; export type UserId = User['id'];每次Schema更新后,只要重新运行
prisma generate,这个文件里的类型会自动和Schema同步,根本不用你手动编辑。
如果你的需求是运行时获取字段类型(而不是TypeScript编译时类型),可以考虑解析schema.prisma文件的内容,或者使用Prisma的introspection API,但大多数场景下,上面的TypeScript类型方案已经足够满足需求了。
内容的提问来源于stack exchange,提问作者Valeri




