Skip to content

Problem after using ver 7 with generated types for mapping of discriminator #1737

Closed
@nenadfspartans

Description

@nenadfspartans

Description

This was working before ver 7 and it creates working code for my usecase.

This is what creates problem for me:

This is request body that can accept one of these options.

schema:
              oneOf:
                - $ref: '#/components/schemas/Model1'
                - $ref: '#/components/schemas/Model2'
              discriminator:
                propertyName: template
                mapping:
                  model1: '#/components/schemas/Model1'
                  model2: '#/components/schemas/Model2'

Here we define descriminator, redocly populates last 2 rows of mapping, it was not problem with 6.7.0

Document:
      type: object
      properties:
        template:
          $ref: '#/components/schemas/TemplateField'
      discriminator:
        propertyName: template
        mapping:
          model2: '#/components/schemas/Model2'
          model1: '#/components/schemas/Model1'
          Model1: '#/components/schemas/Model1'
          Model2: '#/components/schemas/Model2'

Generated code with v6.7.0, perfectly fine for my needs.

 Model1: {
      template: "model1";
    } & Omit<components["schemas"]["Document"], "template"> & {
      data: {
        page: number;
        batch: {
          sku: string;
          name: string;
        };
        totalPages: number;
        images: components["schemas"]["ImageUrlObject"][];
      };
    };

Generated code with v7.0.0

Model1: Omit<components["schemas"]["Document"], "template"> & {
            data: {
                page: number;
                batch: {
                    sku: string;
                    name: string;
                };
                totalPages: number;
                images: components["schemas"]["ImageUrlObject"][];
            };
        } & {
            /**
             * @description discriminator enum property added by openapi-typescript
             * @enum {string}
             */
            template: "model1";
        } & {
            /**
             * @description discriminator enum property added by openapi-typescript
             * @enum {string}
             */
            template: "model2" | "Model1";
        };

Thanks!

Checklist

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingopenapi-tsRelevant to the openapi-typescript library

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions