github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/typescript-fetch/modelOneOf.mustache (about)

     1  {{#hasImports}}
     2  import {
     3      {{#imports}}
     4      {{{.}}},
     5      {{/imports}}
     6      {{#oneOf}}
     7      {{{.}}}FromJSONTyped,
     8      {{{.}}}ToJSON,
     9      {{/oneOf}}
    10  } from './';
    11  
    12  {{/hasImports}}
    13  /**
    14   * @type {{classname}}{{#description}}
    15   * {{{description}}}{{/description}}
    16   * @export
    17   */
    18  export type {{classname}} = {{#discriminator}}{{#mappedModels}}{ {{discriminator.propertyName}}: '{{mappingName}}' } & {{modelName}}{{^-last}} | {{/-last}}{{/mappedModels}}{{/discriminator}}{{^discriminator}}{{#oneOf}}{{{.}}}{{^-last}} | {{/-last}}{{/oneOf}}{{/discriminator}};
    19  
    20  export function {{classname}}FromJSON(json: any): {{classname}} {
    21      return {{classname}}FromJSONTyped(json, false);
    22  }
    23  
    24  export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
    25      if ((json === undefined) || (json === null)) {
    26          return json;
    27      }
    28  {{#discriminator}}
    29      switch (json['{{discriminator.propertyName}}']) {
    30  {{#discriminator.mappedModels}}
    31          case '{{mappingName}}':
    32              return {...{{modelName}}FromJSONTyped(json, true), {{discriminator.propertyName}}: '{{mappingName}}'};
    33  {{/discriminator.mappedModels}}
    34          default:
    35              throw new Error(`No variant of {{classname}} exists with '{{discriminator.propertyName}}=${json['{{discriminator.propertyName}}']}'`);
    36      }
    37  {{/discriminator}}
    38  {{^discriminator}}
    39      return { {{#oneOf}}...{{{.}}}FromJSONTyped(json, true){{^-last}}, {{/-last}}{{/oneOf}} };
    40  {{/discriminator}}
    41  }
    42  
    43  export function {{classname}}ToJSON(value?: {{classname}} | null): any {
    44      if (value === undefined) {
    45          return undefined;
    46      }
    47      if (value === null) {
    48          return null;
    49      }
    50  {{#discriminator}}
    51      switch (value['{{discriminator.propertyName}}']) {
    52  {{#discriminator.mappedModels}}
    53          case '{{mappingName}}':
    54              return {{modelName}}ToJSON(value);
    55  {{/discriminator.mappedModels}}
    56          default:
    57              throw new Error(`No variant of {{classname}} exists with '{{discriminator.propertyName}}=${value['{{discriminator.propertyName}}']}'`);
    58      }
    59  {{/discriminator}}
    60  {{^discriminator}}
    61      return { {{#oneOf}}...{{{.}}}ToJSON(value){{^-last}}, {{/-last}}{{/oneOf}} };
    62  {{/discriminator}}
    63  }