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

升级至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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 23:12:06