feat: Generate named response types for oneOf union responses #318
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When OpenAPI specifications use
oneOf
in response schemas, the TypeScript codegen creates union types but fails to generate the corresponding{operationId}Response
type aliases. This inconsistency makes it difficult to use these response types in API mocking libraries and other tooling that rely on consistent named types.Solution
Extended the
shouldExtractNode
function to recognizets.isUnionTypeNode(node)
as a complex type that should be extracted into a named type alias. This ensures that responses defined withoneOf
generate proper{operationId}Response
types, maintaining consistency with other response types.Example
OpenAPI spec with oneOf response:
Before: Only inline union type generated
After:
GetUserResponse
type alias generatedThis change ensures that developers can consistently reference response types in their API mocking and testing code, regardless of whether the OpenAPI specification uses simple schemas or
oneOf
union types.