swagger-codegen-ts
swagger-codegen-ts copied to clipboard
JSONSchema case is not supported
schema.yaml
...
components:
schemas:
BaseSchema:
type: object
properties:
type:
type: string
enum:
- FOO
- BAR
- BAZ
required:
- type
FooSchema:
allOf:
- $ref: '#/components/schemas/BaseSchema'
- type: object
properties:
type:
type: string
enum:
- FOO
It is correct JSONSchema
FooSchema equal type:
type FooSchema = { type: 'FOO' | 'BAR' | 'BAZ' } & { type: 'FOO' | undefined} -> { type: 'FOO' }
generated code:
export type BaseSchema = { type: 'FOO' | 'BAR' | 'BAZ' };
export type FooSchema = BaseSchema & { type: Option<'FOO'> };
Nothing can match type FooSchema. I understand that this is the result of a combination of optionFromNullable and intersection. It turns out that we do not fully support the JSONSchema. We could throw away the mistake of not supporting this case.
Let's discuss this and think about a solution.