类型定义
默认模板中的请求上下文、Worker 上下文、通用结果和领域类型。
默认模板的公共类型主要放在 src/types.ts 和 src/ctx/。各业务模块的输入、输出和数据模型留在本模块内,不会全部集中到一个全局类型文件中。
Variables
Variables 定义 Hono 请求期间可通过 c.get()、c.set() 和 c.var 访问的上下文变量,源码位于 src/types.ts。
Prop
Type
Ctx
type Ctx = Context<{
Bindings: CloudflareBindings;
Variables: Variables;
}>;Ctx 是默认模板统一使用的 Hono Context 类型。Cloudflare 资源和运行时变量通过 c.env 读取,请求上下文变量通过 c.var 或 c.get() 读取。
WorkerCtx
WorkerCtx 位于 src/ctx/create.ts,是 HTTP、Queue、Cron 和 Durable Object Alarm 共用的运行上下文。
Prop
Type
createWorkerCtx
根据 Hono Context 或非 HTTP 入口提供的字段创建 WorkerCtx。fetch 入口传入 Hono Context;queue、scheduled 和 alarm 入口传入 env、logger、locale、tr 和 i18nCtx。
resolveFetchWorkerCtx
接收 Context | WorkerCtx。参数已经是 WorkerCtx 时直接返回,否则按 fetch 入口创建新的 WorkerCtx。
getWorkerCtx
getWorkerCtx 位于 src/ctx/get.ts,供 Queue、Cron 和 Alarm 入口创建完整上下文。未传 locale 时使用 config/i18n.ts 的默认语言;未传 runtime 时按 queue 处理。
WorkerCtx 只能在本次调用中使用
不要把 getWorkerCtx() 的返回值缓存在模块作用域。一个 Worker isolate 可能连续处理多次调用,每次调用都必须使用自己的日志、语言和运行信息。
通用结果类型
这些类型都定义在 src/types.ts。
SuccessResult<T>
Prop
Type
FailureResult
Prop
Type
FnResult<T>
SuccessResult<T> | FailureResult,供 Service 和其他内部函数统一返回成功或失败结果。
APIResponse<T>
API 返回类型。成功时与 SuccessResult<T> 相同;失败时必须提供 error,客户端据此读取相应语言的错误文案。
isSuccessResult
根据 success === true 把 APIResponse<T> 收窄为 SuccessResult<T>。
类型所在位置
| 类型范围 | 位置 |
|---|---|
| 配置输入和校验规则 | src/libs/config/schemas/ |
| Cloudflare Binding | worker-configuration.d.ts |
| API 请求参数 | 对应的 src/api/**/schema.ts 或路由文件 |
| 账号、认证和会话 | src/core/services/auth/types.ts、src/core/services/session/types.ts |
| 角色、权益、能力和 Subject | src/core/services/access/**/types.ts |
| 支付 | src/core/modules/payment-v1/types.ts 及其子模块 |
| 联盟推广 | src/core/services/affiliate/**/types.ts |
| Reaction | src/core/reaction/types.ts 及各 Event、Command 定义文件 |
| 原始数据库记录和 SQL 查询结果 | src/core/db/ 下的类型或 DAO 文件 |
| 仓储操作的输入、结果和数据转换 | src/core/repositories/ 下的对应模块 |
| 业务领域类型 | 拥有该业务概念的领域模块 |
| API 请求和响应 DTO | src/api/ 下的对应接口模块 |
worker-configuration.d.ts 由 npm run cf-typegen 根据 wrangler.jsonc 和环境变量生成,不应直接编辑。