File tree Expand file tree Collapse file tree 31 files changed +173
-148
lines changed
modules/openapi-generator/src
main/resources/typescript-angular
test/java/org/openapitools/codegen/typescript/typescriptangular
typescript-angular-v12-provided-in-any/builds/default/model
typescript-angular-v12-provided-in-root/builds
typescript-angular-v13-provided-in-any/builds/default/model
typescript-angular-v13-provided-in-root/builds
typescript-angular-v14-provided-in-root/builds/default/model
typescript-angular-v14-query-param-object-format/model
typescript-angular-v15-provided-in-root/builds/default/model
typescript-angular-v16-provided-in-root/builds/default/model
typescript-angular-v17-provided-in-root/builds/default/model
typescript-angular-v18-provided-in-root/builds/default/model
typescript-angular-v19-with-angular-dependency-params/builds/default/model
typescript-angular-v19/builds/default/model Expand file tree Collapse file tree 31 files changed +173
-148
lines changed Original file line number Diff line number Diff line change @@ -13,18 +13,18 @@ export enum {{classname}} {
1313}
1414{ {/stringEnums} }
1515{ {^stringEnums} }
16- export type { {classname} } = { {#allowableValues} }{ {#enumVars} }{ {{value} }}{ {^-last} } | { {/-last} }{ {/enumVars} }{ {/allowableValues} };
17-
1816export const { {classname} } = {
1917{{#allowableValues} }
2018{ {#enumVars} }
2119{ {#enumDescription} }
2220
2321 /**
2422 * { {.} }
25- */{ {/enumDescription} }
26- { {name} }: { {{value} }} as { {classname} }{ {^-last} },{ {/-last} }
23+ */
24+ { {/enumDescription} }
25+ { {name} }: { {{value} }}{ {^-last} },{ {/-last} }
2726{ {/enumVars} }
2827{ {/allowableValues} }
29- };
28+ } as const;
29+ export type { {classname} } = typeof { {classname} }[keyof typeof { {classname} }];
3030{ {/stringEnums} }
Original file line number Diff line number Diff line change @@ -15,14 +15,14 @@ export enum {{classname}}{{enumName}} {
1515};
1616{ {/stringEnums} }
1717{ {^stringEnums} }
18- export type { {enumName} } = { {#allowableValues} }{ {#enumVars} }{ {{value} }}{ {^-last} } | { {/-last} }{ {/enumVars} }{ {/allowableValues} };
1918 export const { {enumName} } = {
2019 {{#allowableValues} }
2120 { {#enumVars} }
22- { {name} }: { {{value} }} as { {enumName } } { {^-last} },{ {/-last} }
21+ { {name} }: { {{value} }}{ {^-last} },{ {/-last} }
2322 { {/enumVars} }
2423 { {/allowableValues} }
25- };
24+ } as const;
25+ export type { {enumName} } = typeof { {enumName} }[keyof typeof { {enumName} }];
2626{ {/stringEnums} }
2727 { {/isEnum} }
2828{ {/vars} }
Original file line number Diff line number Diff line change @@ -439,4 +439,29 @@ public void testBasePath() throws IOException {
439439 final String fileContents = Files .readString (Paths .get (output + "/api.base.service.ts" ));
440440 assertThat (fileContents ).containsOnlyOnce ("basePath = '/relative/url'" );
441441 }
442+
443+ @ Test
444+ public void testEnumAsConst () throws IOException {
445+ // GIVEN
446+ final String specPath = "src/test/resources/3_0/enum.yaml" ;
447+
448+ File output = Files .createTempDirectory ("test" ).toFile ();
449+ output .deleteOnExit ();
450+
451+ // WHEN
452+ final CodegenConfigurator configurator = new CodegenConfigurator ()
453+ .setGeneratorName ("typescript-angular" )
454+ .setInputSpec (specPath )
455+ .setOutputDir (output .getAbsolutePath ().replace ("\\ " , "/" ));
456+
457+ final ClientOptInput clientOptInput = configurator .toClientOptInput ();
458+
459+ Generator generator = new DefaultGenerator ();
460+ generator .opts (clientOptInput ).generate ();
461+
462+ // THEN
463+ final String fileContents = Files .readString (Paths .get (output + "/model/type.ts" ));
464+ assertThat (fileContents ).containsOnlyOnce ("} as const;" );
465+ assertThat (fileContents ).doesNotContain (" as Type" );
466+ }
442467}
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
2424 complete ?: boolean ;
2525}
2626export namespace Order {
27- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
2827 export const StatusEnum = {
29- Placed : 'placed' as StatusEnum ,
30- Approved : 'approved' as StatusEnum ,
31- Delivered : 'delivered' as StatusEnum
32- } ;
28+ Placed : 'placed' ,
29+ Approved : 'approved' ,
30+ Delivered : 'delivered'
31+ } as const ;
32+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3333}
3434
3535
Original file line number Diff line number Diff line change @@ -26,12 +26,12 @@ export interface Pet {
2626 status ?: Pet . StatusEnum ;
2727}
2828export namespace Pet {
29- export type StatusEnum = 'available' | 'pending' | 'sold' ;
3029 export const StatusEnum = {
31- Available : 'available' as StatusEnum ,
32- Pending : 'pending' as StatusEnum ,
33- Sold : 'sold' as StatusEnum
34- } ;
30+ Available : 'available' ,
31+ Pending : 'pending' ,
32+ Sold : 'sold'
33+ } as const ;
34+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3535}
3636
3737
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
2424 complete ?: boolean ;
2525}
2626export namespace Order {
27- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
2827 export const StatusEnum = {
29- Placed : 'placed' as StatusEnum ,
30- Approved : 'approved' as StatusEnum ,
31- Delivered : 'delivered' as StatusEnum
32- } ;
28+ Placed : 'placed' ,
29+ Approved : 'approved' ,
30+ Delivered : 'delivered'
31+ } as const ;
32+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3333}
3434
3535
Original file line number Diff line number Diff line change @@ -26,12 +26,12 @@ export interface Pet {
2626 status ?: Pet . StatusEnum ;
2727}
2828export namespace Pet {
29- export type StatusEnum = 'available' | 'pending' | 'sold' ;
3029 export const StatusEnum = {
31- Available : 'available' as StatusEnum ,
32- Pending : 'pending' as StatusEnum ,
33- Sold : 'sold' as StatusEnum
34- } ;
30+ Available : 'available' ,
31+ Pending : 'pending' ,
32+ Sold : 'sold'
33+ } as const ;
34+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3535}
3636
3737
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
2424 complete ?: boolean ;
2525}
2626export namespace Order {
27- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
2827 export const StatusEnum = {
29- Placed : 'placed' as StatusEnum ,
30- Approved : 'approved' as StatusEnum ,
31- Delivered : 'delivered' as StatusEnum
32- } ;
28+ Placed : 'placed' ,
29+ Approved : 'approved' ,
30+ Delivered : 'delivered'
31+ } as const ;
32+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3333}
3434
3535
Original file line number Diff line number Diff line change @@ -26,12 +26,12 @@ export interface Pet {
2626 status ?: Pet . StatusEnum ;
2727}
2828export namespace Pet {
29- export type StatusEnum = 'available' | 'pending' | 'sold' ;
3029 export const StatusEnum = {
31- Available : 'available' as StatusEnum ,
32- Pending : 'pending' as StatusEnum ,
33- Sold : 'sold' as StatusEnum
34- } ;
30+ Available : 'available' ,
31+ Pending : 'pending' ,
32+ Sold : 'sold'
33+ } as const ;
34+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3535}
3636
3737
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
2424 complete ?: boolean ;
2525}
2626export namespace Order {
27- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
2827 export const StatusEnum = {
29- Placed : 'placed' as StatusEnum ,
30- Approved : 'approved' as StatusEnum ,
31- Delivered : 'delivered' as StatusEnum
32- } ;
28+ Placed : 'placed' ,
29+ Approved : 'approved' ,
30+ Delivered : 'delivered'
31+ } as const ;
32+ export type StatusEnum = typeof StatusEnum [ keyof typeof StatusEnum ] ;
3333}
3434
3535
You can’t perform that action at this time.
0 commit comments