TypeScript如何自动推断OpenAPI生成示例对象的类型
OpenAPI示例对象生成的TypeScript类型自动推导
背景
- 开发TypeScript应用时,需要基于OpenAPI规范自动生成对应接口的示例对象
- 简化版OpenAPI仅定义对象结构、属性类型与可选
example字段;生产环境使用的OpenAPI规范支持oneOf、anyOf组合关键字、数组类型,且对象、数组、组合关键字支持任意层级嵌套
现有生成逻辑
核心逻辑为递归遍历Schema节点,各节点处理规则:
- 命中
oneOf/anyOf关键字时,直接取首个分支Schema进入后续处理 - 命中数组类型时,递归处理子项Schema,最终返回包含单个子项示例的数组
- 命中对象类型时,递归处理所有属性的Schema,组装为完整对象返回
- 命中基础类型时,优先返回Schema中显式配置的
example值 - 命中枚举类型时,返回枚举的第一个值作为示例
- 命中带格式约束的字符串类型时,返回对应格式的默认示例值
- 其余基础类型直接返回类型对应的通用默认示例值
待解决问题
当前核心递归方法processSchema的返回值被标注为any,需要实现类型层面的自动推导,无需手动编写类型声明,即可让TS自动识别生成的示例对象的精确类型,当前已提供开发中(WIP)的完整实现代码,可直接在TypeScript环境调试。
内容的提问来源于stack exchange,提问作者Sasha
相关产品推荐
相关产品推荐

