如何调整OpenAPI规范以生成目标TypeScript联合类型?
问题分析与解决方案
你当前的OpenAPI规范错误地将output定义为对象类型,导致生成的TypeScript类型和预期完全不符。要生成export type output = 'option1' | 'option2' | 'option3' | 'option4' | string;,需要按以下方式修正schema:
核心修正思路
把output从对象类型改为字符串类型,通过anyOf组合枚举值与任意字符串,或使用扩展字段强制指定生成的TypeScript类型。
方案一:标准OpenAPI写法(兼容多数生成器)
使用anyOf明确声明类型为「枚举字符串」或「任意字符串」:
schemas: output: anyOf: - type: string enum: - option1 - option2 - option3 - option4 - type: string
方案二:通过扩展字段强制指定类型(适合特定生成器)
如果使用openapi-typescript这类支持自定义扩展的工具,可以直接通过x-typescript-type字段指定最终生成的类型:
schemas: output: type: string enum: - option1 - option2 - option3 - option4 x-typescript-type: "'option1' | 'option2' | 'option3' | 'option4' | string"
注意事项
部分代码生成器会将anyOf中的两个string类型合并为单纯的string(因为枚举值本身就是string的子集),此时方案二的扩展字段方式更能确保生成你想要的联合类型。
内容的提问来源于stack exchange,提问作者Moin Nawaz
相关产品推荐
相关产品推荐

