Skip to content

[BUG][typescript-angular] oneOf and anyOf generates incorrect model for primitive types #4130

@snebjorn

Description

@snebjorn
Description

Using oneOf or anyOf will generate a model with incorrect imports and wrong types.

import { boolean } from "./boolean";
import { Number } from "./number";
import { string } from "./string";
import { array } from "./array";
import { integer } from "./integer";
import { object } from "./object";

export interface Foo {
  id?: string;
  xxx?: Number | string | boolean | array | object | integer;
  yyy?: Number | string | boolean | array | object | integer;
}
  • All the imports are incorrect. None of them should be imported.
  • Number is incorrect. It's number and it should not be imported.
  • integer is incorrect. It's number and should be merged with number. It should not be imported.
  • array is incorrect. It's Array<T> or T[]. So in this example it should have been Array<string> or string[]. It should not be imported.

The expected model is:

// no imports

export interface Foo {
  id?: string;
  xxx?: number | string | boolean | string[] | object;
  yyy?: number | string | boolean | string[] | object;
}
openapi-generator version

openapi-generator v4.1.3

OpenAPI declaration file content or url
openapi: 3.0.0
info:
  title: Foo
  version: '0001'
  description: The description
paths:
  /FooSet:
    get:
      summary: Get entities from FooSet
      responses:
        '200':
          description: Retrieved entities
          content:
            application/json:
              schema:
                type: object
                properties:
                  value:
                    type: array
                    items:
                      $ref: '#/components/schemas/NAMESPACE.Foo'
components:
  schemas:
    NAMESPACE.Foo:
      type: object
      properties:
        id:
          type: string
        xxx:
          anyOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
              items:
                type: string
            - type: object
            - type: integer
        yyy:
          oneOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
              items:
                type: string
            - type: object
            - type: integer
      title: Foo
Command line used for generation

npx openapi-generator generate -g typescript-angular -i openapi.yaml-o out/test

Steps to reproduce

Generate a typescript client using the above yaml.

Related issues/PRs

There appears to be a lot of issues related to oneOf and anyOf. But couldn't find any specifically about this.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions