diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/modelEnum.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/modelEnum.mustache index 6575828833d..8fdf09b4697 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/modelEnum.mustache @@ -13,8 +13,6 @@ export enum {{classname}} { } {{/stringEnums}} {{^stringEnums}} -export type {{classname}} = {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}} | {{/-last}}{{/enumVars}}{{/allowableValues}}; - export const {{classname}} = { {{#allowableValues}} {{#enumVars}} @@ -22,9 +20,11 @@ export const {{classname}} = { /** * {{.}} - */{{/enumDescription}} - {{name}}: {{{value}}} as {{classname}}{{^-last}},{{/-last}} + */ +{{/enumDescription}} + {{name}}: {{{value}}}{{^-last}},{{/-last}} {{/enumVars}} {{/allowableValues}} -}; +} as const; +export type {{classname}} = typeof {{classname}}[keyof typeof {{classname}}]; {{/stringEnums}} diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/modelGenericEnums.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/modelGenericEnums.mustache index a824e55ec53..8e636697b67 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/modelGenericEnums.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/modelGenericEnums.mustache @@ -15,14 +15,14 @@ export enum {{classname}}{{enumName}} { }; {{/stringEnums}} {{^stringEnums}} - export type {{enumName}} = {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}} | {{/-last}}{{/enumVars}}{{/allowableValues}}; export const {{enumName}} = { {{#allowableValues}} {{#enumVars}} - {{name}}: {{{value}}} as {{enumName}}{{^-last}},{{/-last}} + {{name}}: {{{value}}}{{^-last}},{{/-last}} {{/enumVars}} {{/allowableValues}} - }; + } as const; + export type {{enumName}} = typeof {{enumName}}[keyof typeof {{enumName}}]; {{/stringEnums}} {{/isEnum}} {{/vars}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java index 6c76ef3cf36..fc169b604fc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java @@ -439,4 +439,29 @@ public class TypeScriptAngularClientCodegenTest { final String fileContents = Files.readString(Paths.get(output + "/api.base.service.ts")); assertThat(fileContents).containsOnlyOnce("basePath = '/relative/url'"); } + + @Test + public void testEnumAsConst() throws IOException { + // GIVEN + final String specPath = "src/test/resources/3_0/enum.yaml"; + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + // WHEN + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("typescript-angular") + .setInputSpec(specPath) + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + + Generator generator = new DefaultGenerator(); + generator.opts(clientOptInput).generate(); + + // THEN + final String fileContents = Files.readString(Paths.get(output + "/model/type.ts")); + assertThat(fileContents).containsOnlyOnce("} as const;"); + assertThat(fileContents).doesNotContain(" as Type"); + } } diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/pet.ts index b009b060c1f..e8807b96fd2 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/model/pet.ts @@ -26,12 +26,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/pet.ts index b009b060c1f..e8807b96fd2 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/model/pet.ts @@ -26,12 +26,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/order.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/order.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/pet.ts b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/pet.ts index b009b060c1f..e8807b96fd2 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/model/pet.ts @@ -26,12 +26,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/pet.ts index b009b060c1f..e8807b96fd2 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/model/pet.ts @@ -26,12 +26,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/order.ts b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/order.ts +++ b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/pet.ts b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/order.ts b/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/order.ts +++ b/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/pet.ts b/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v14-query-param-object-format/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/order.ts index 660dcc960c5..fcc8b99fdf6 100644 --- a/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - SHIPPED: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + SHIPPED: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v19/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v19/builds/default/model/order.ts index 5d9a0e44078..b1bea2ba502 100644 --- a/samples/client/petstore/typescript-angular-v19/builds/default/model/order.ts +++ b/samples/client/petstore/typescript-angular-v19/builds/default/model/order.ts @@ -24,12 +24,12 @@ export interface Order { complete?: boolean; } export namespace Order { - export type StatusEnum = 'placed' | 'approved' | 'delivered'; export const StatusEnum = { - Placed: 'placed' as StatusEnum, - Approved: 'approved' as StatusEnum, - Delivered: 'delivered' as StatusEnum - }; + Placed: 'placed', + Approved: 'approved', + Delivered: 'delivered' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; } diff --git a/samples/client/petstore/typescript-angular-v19/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v19/builds/default/model/pet.ts index b6971b3e514..5c189773cf0 100644 --- a/samples/client/petstore/typescript-angular-v19/builds/default/model/pet.ts +++ b/samples/client/petstore/typescript-angular-v19/builds/default/model/pet.ts @@ -27,12 +27,12 @@ export interface Pet { status?: Pet.StatusEnum; } export namespace Pet { - export type StatusEnum = 'available' | 'pending' | 'sold'; export const StatusEnum = { - Available: 'available' as StatusEnum, - Pending: 'pending' as StatusEnum, - Sold: 'sold' as StatusEnum - }; + Available: 'available', + Pending: 'pending', + Sold: 'sold' + } as const; + export type StatusEnum = typeof StatusEnum[keyof typeof StatusEnum]; }