You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Drizzle ORM中获取模型类型?查询结果类型推导验证

问题解答

1. 变量post的类型

当执行const post = await db.query.posts.findFirst({ where: ...});时,post的类型由两部分决定:

  • 你的数据库Schema中posts表定义的实体类型(单条记录的结构类型)
  • 查询的确定性:如果where条件能保证必然命中数据(比如匹配主键/唯一约束),类型是Posts实体类型;如果查询可能无结果,类型是Posts | null

2. 用ReturnType<typeof f>推导类型的可行性

这种方法是正确且常用的,具体实现示例如下:

// 包裹查询逻辑的函数
const fetchPost = async () => {
  return await db.query.posts.findFirst({ where: /* 你的业务查询条件 */ });
};

// 提取异步函数的实际返回类型
type Post = Awaited<ReturnType<typeof fetchPost>>;

// 组件Props类型定义
type ComponentProps = {
  post: Post;
};

注意点:

  • 必须用Awaited包裹ReturnType结果,因为异步函数的ReturnType返回的是Promise<xxx>,Awaited可以提取出内部的实际数据类型
  • fetchPost中的where条件要和组件实际接收的post对应的查询条件保持一致,才能保证推导的类型准确

内容的提问来源于stack exchange,提问作者Page not found

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:33:15