TypeScript
Better Auth 设计为类型安全的。客户端和服务器端都使用 TypeScript 构建,让你可以轻松推断类型。
TypeScript 配置
严格模式
Better Auth 设计为与 TypeScript 的严格模式一起工作。我们建议在你的 TypeScript 配置文件中启用严格模式:
如果你不能将 strict
设置为 true
,你可以启用 strictNullChecks
:
类型推断
客户端 SDK 和服务器端都提供了可以通过 $Infer
属性推断的类型。插件可以扩展基础类型,如 User
和 Session
,你可以使用 $Infer
来推断这些类型。此外,插件还可以提供额外的类型,这些类型也可以通过 $Infer
进行推断。
Session
类型包含 session
和 user
属性。user
属性表示用户对象类型,session
属性表示会话对象类型。
你也可以在服务器端推断类型。
额外字段
Better Auth 允许你向用户和会话对象添加额外字段。所有额外字段都会被正确推断,并在服务器端和客户端可用。
在上面的例子中,我们向用户对象添加了一个 role
字段。这个字段现在在 Session
类型中可用。
在客户端推断额外字段
为了确保在客户端正确推断额外字段的类型,你需要告知客户端这些字段。根据你的项目结构,有两种方法可以实现这一点:
- 对于 Monorepo 或单项目设置
如果你的服务器和客户端代码位于同一个项目中,你可以使用 inferAdditionalFields
插件来自动从服务器配置推断额外字段。
- 对于分离的客户端-服务器项目
如果你的客户端和服务器位于不同的项目中,你需要在创建 auth 客户端时手动指定额外字段。