SuperAPI AI 工具集

codegen-over-complex-types

编程与开发

查看项目

更新于 10-16 00:06

技能介绍

用途:当 TypeScript 类型极其复杂、需要镜像外部 schema(API、数据库、协议),或必须与变化的外部来源保持同步时,考虑用代码生成替代复杂的类型级编程。

主要能力:将编译期复杂度转化为构建期生成,得到更简单、可维护且与真实来源同步的类型。适用信号包括类型定义超过 100 行、手动跟进 API 变更、类型与后端不同步、团队难以维护复杂类型代码。

使用方式:按来源选择工具。OpenAPI 用 openapi-typescript:npm install -D openapi-typescript,npx openapi-typescript schema.yaml -o src/api-types.ts。GraphQL 用 @graphql-codegen/cli 与 @graphql-codegen/typescript,通过 codegen.yml 配置 schema 与输出。数据库用 Prisma:npm install -D prisma,npx prisma generate。JSON Schema 用 json-schema-to-typescript,Protobuf 用 protobuf-ts。可在 package.json 的 scripts 中加入 generate:api、generate:db 与 build 流程,并在 CI 中运行生成后 git diff --exit-code 检查是否同步。也可混合使用:从外部生成基础类型,再用 Omit、Partial 等类型级工具扩展或派生。

适用场景:真实来源在外部(API schema、数据库、协议定义)时;类型级逻辑过于复杂时;同步至关重要时;团队类型级经验有限时。

限制与不适用:从既有 TypeScript 类型派生、简单变换(Pick/Omit/Partial)、无外部真实来源的内部领域模型、需要运行时灵活性的场景,宜直接用类型级代码。资料未提供具体收费、价格或平台限制信息。

参考:Effective TypeScript 第二版 Item 58。