用途:该技能聚焦 API 开发的端到端类型安全,帮助在客户端与服务端之间保持类型一致,并覆盖契约驱动与代码生成两条技术路线。
主要能力:一是由 Zod schema 生成 OpenAPI 文档,支持类型优先开发;二是 ts-rest 契约优先方案,客户端与服务端共享同一份 REST 契约;三是 Zodios 类型安全 REST 客户端;四是使用 Pact 等工具做契约测试;五是生产实践建议,包括 monorepo 共享 schema 包、CI 中检测破坏性变更等。
使用方式:安装依赖如 npm install @asteasolutions/zod-to-openapi zod、npm install @ts-rest/core、npm install @ts-rest/next、npm install @ts-rest/react-query、npm install @zodios/core zod 等。用 extendZodWithOpenApi(z) 扩展 Zod,定义带 OpenAPI 元数据的 schema,并通过 OpenAPIRegistry 注册 schema 与路径后用 OpenApiGeneratorV3 生成文档。ts-rest 侧用 initContract 定义 router 契约,服务端用 createNextRouter 实现,客户端用 initClient 调用,React 侧可用 @ts-rest/react-query 接入。Zodios 侧用 makeApi 定义接口并 new Zodios 创建客户端。契约测试示例使用 @pact-foundation/pact。
适用场景:全栈 TypeScript 项目、前后端共享类型的 monorepo、需要契约测试与破坏性变更检测的团队。
限制:资料明确列出不适用场景,包括 tRPC 项目、GraphQL API、无共享类型的简单 REST API、非 TypeScript 项目、多语言微服务、面向第三方消费的公共 API。此外应避免共享数据库实体作为 API 类型、缺少运行时校验、重复定义 schema、未对共享类型做版本管理、缺少契约测试、混用多种类型安全方案、缺少破坏性变更检测、硬编码类型等反模式。具体定价、平台支持等资料暂未提供。