升级至Better-Auth 1.4后,$Infer Session类型推断失效
Better-Auth 1.4.x:Session.user额外字段无法被类型推断的解决办法
升级到Better-Auth 1.4.x后,用官方推荐的type Session = typeof auth.$Infer.Session确实会出现自定义user字段无法被类型推断的问题,以下是几个可行的解决思路:
显式传入自定义User类型到createAuth
初始化Better-Auth时,直接给泛型参数传入你的完整User类型定义,让框架明确感知到额外字段:import { createAuth } from "better-auth"; // 定义包含额外字段的User类型 type CustomUser = { id: string; email: string; username: string; // 自定义字段 avatarUrl: string; // 自定义字段 }; // 初始化时传入泛型参数 const auth = createAuth<{ User: CustomUser }>({ providers: { email: {}, }, // 其他配置项... }); // 此时推断的Session会包含完整的User字段 type Session = typeof auth.$Infer.Session;通过全局类型声明扩展User
如果习惯用全局类型增强的方式,创建一个better-auth.d.ts类型声明文件,确保它被TypeScript识别:import "better-auth"; declare module "better-auth" { interface User { username: string; avatarUrl: string; } }然后在
tsconfig.json的include数组里添加这个文件,避免TypeScript忽略它:{ "include": ["better-auth.d.ts", "src/**/*"] }清除TypeScript缓存并重启编辑器
有时候TypeScript会缓存旧的类型信息,导致新字段无法被推断。执行npx tsc --clearCache清除缓存,然后重启编辑器,再检查类型推断是否恢复正常。
内容的提问来源于stack exchange,提问作者Wisam Jbori
相关产品推荐
相关产品推荐

