使用 prisma 的 typescript 类型转换
Posted
技术标签:
【中文标题】使用 prisma 的 typescript 类型转换【英文标题】:typescript type conversion with prisma 【发布时间】:2021-10-15 18:14:56 【问题描述】:我想使用 Typescipt 和 Prisma ORM 更改我的“createdAt”格式。
const post = await prisma.post.find( where: id: 1 )
post.createdAt = moment(post.createdAt)
return post
// Type 'string' is not assignable to type 'Date'
我完全理解为什么会出现这个错误,但我不知道如何有效地解决它。 我现在该怎么办? 每次从 db 调用数据时,我应该创建一个新接口还是自定义类型?
【问题讨论】:
【参考方案1】:您可以更新 Prisma 客户端为 Post.createdAt
生成的类型定义以适应 moment
对象类型。这可能是它的样子
import Post from "@prisma/client"; // Prisma client generated definition of Post
type customPost = Omit<Post, 'createdAt'> &
createdAt: Date | moment.Moment | string // moment constructor returns object of type moment.Moment, so adding that in addition to string.
async function foo()
const post : customPost = await prisma.post.find( where: id: 1 )
post.createdAt = moment(post.createdAt)
return post
omit utility用于在重新定义之前先擦除createdAt
的原始定义。
【讨论】:
以上是关于使用 prisma 的 typescript 类型转换的主要内容,如果未能解决你的问题,请参考以下文章
用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)