You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从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

火山引擎 最新活动