用途:在数据库模型、API DTO 与前端 UI 模型之间建立清晰转换层,防止内部字段泄漏,并让各层类型互不依赖。资料假设数据已获取,不涉及 ORM 配置。
主要能力:明确各层职责(DB 模型→API DTO→UI 模型);用显式白名单而非删除字段来生成 API 响应;在边界处规范化 null、转换 Date 等非 JSON 原生类型;处理嵌套关系时使用精简的 summary 形状,避免循环引用与载荷膨胀;在前端集中计算 displayName、roleLabel、isNew、initials 等派生字段;统一处理 PATCH 等更新接口,始终返回完整映射形状;为映射器编写纯函数单元测试,并用 not.toHaveProperty 断言敏感字段未泄漏。
使用方式:后端在 controller/handler 中调用映射器,service 只返回 DB 类型;前端在数据获取边界(如 query hook)调用 toUIModel,组件只消费 UI 模型。输出包括 mappers/[entity].ts、models/[entity].ts、hooks/use[Entity].ts 与 mappers/[entity].test.ts。
适用场景:全栈或后端渲染项目,需要稳定 API 契约、隐藏 password、stripeCustomerId、internalScore 等敏感字段,并避免 API 字段变更导致大量组件失效。
限制:资料未提供具体安装命令、依赖版本、收费或平台信息;示例基于 Prisma 与 TypeScript,其他技术栈需自行适配。