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}} {
13
13
}
14
14
{ {/stringEnums} }
15
15
{ {^stringEnums} }
16
- export type { {classname} } = { {#allowableValues} }{ {#enumVars} }{ {{value} }}{ {^-last} } | { {/-last} }{ {/enumVars} }{ {/allowableValues} };
17
-
18
16
export const { {classname} } = {
19
17
{{#allowableValues} }
20
18
{ {#enumVars} }
21
19
{ {#enumDescription} }
22
20
23
21
/**
24
22
* { {.} }
25
- */{ {/enumDescription} }
26
- { {name} }: { {{value} }} as { {classname} }{ {^-last} },{ {/-last} }
23
+ */
24
+ { {/enumDescription} }
25
+ { {name} }: { {{value} }}{ {^-last} },{ {/-last} }
27
26
{ {/enumVars} }
28
27
{ {/allowableValues} }
29
- };
28
+ } as const;
29
+ export type { {classname} } = typeof { {classname} }[keyof typeof { {classname} }];
30
30
{ {/stringEnums} }
Original file line number Diff line number Diff line change @@ -15,14 +15,14 @@ export enum {{classname}}{{enumName}} {
15
15
};
16
16
{ {/stringEnums} }
17
17
{ {^stringEnums} }
18
- export type { {enumName} } = { {#allowableValues} }{ {#enumVars} }{ {{value} }}{ {^-last} } | { {/-last} }{ {/enumVars} }{ {/allowableValues} };
19
18
export const { {enumName} } = {
20
19
{{#allowableValues} }
21
20
{ {#enumVars} }
22
- { {name} }: { {{value} }} as { {enumName } } { {^-last} },{ {/-last} }
21
+ { {name} }: { {{value} }}{ {^-last} },{ {/-last} }
23
22
{ {/enumVars} }
24
23
{ {/allowableValues} }
25
- };
24
+ } as const;
25
+ export type { {enumName} } = typeof { {enumName} }[keyof typeof { {enumName} }];
26
26
{ {/stringEnums} }
27
27
{ {/isEnum} }
28
28
{ {/vars} }
Original file line number Diff line number Diff line change @@ -439,4 +439,29 @@ public void testBasePath() throws IOException {
439
439
final String fileContents = Files .readString (Paths .get (output + "/api.base.service.ts" ));
440
440
assertThat (fileContents ).containsOnlyOnce ("basePath = '/relative/url'" );
441
441
}
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
+ }
442
467
}
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
24
24
complete ?: boolean ;
25
25
}
26
26
export namespace Order {
27
- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
28
27
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 ] ;
33
33
}
34
34
35
35
Original file line number Diff line number Diff line change @@ -26,12 +26,12 @@ export interface Pet {
26
26
status ?: Pet . StatusEnum ;
27
27
}
28
28
export namespace Pet {
29
- export type StatusEnum = 'available' | 'pending' | 'sold' ;
30
29
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 ] ;
35
35
}
36
36
37
37
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
24
24
complete ?: boolean ;
25
25
}
26
26
export namespace Order {
27
- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
28
27
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 ] ;
33
33
}
34
34
35
35
Original file line number Diff line number Diff line change @@ -26,12 +26,12 @@ export interface Pet {
26
26
status ?: Pet . StatusEnum ;
27
27
}
28
28
export namespace Pet {
29
- export type StatusEnum = 'available' | 'pending' | 'sold' ;
30
29
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 ] ;
35
35
}
36
36
37
37
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
24
24
complete ?: boolean ;
25
25
}
26
26
export namespace Order {
27
- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
28
27
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 ] ;
33
33
}
34
34
35
35
Original file line number Diff line number Diff line change @@ -26,12 +26,12 @@ export interface Pet {
26
26
status ?: Pet . StatusEnum ;
27
27
}
28
28
export namespace Pet {
29
- export type StatusEnum = 'available' | 'pending' | 'sold' ;
30
29
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 ] ;
35
35
}
36
36
37
37
Original file line number Diff line number Diff line change @@ -24,12 +24,12 @@ export interface Order {
24
24
complete ?: boolean ;
25
25
}
26
26
export namespace Order {
27
- export type StatusEnum = 'placed' | 'approved' | 'delivered' ;
28
27
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 ] ;
33
33
}
34
34
35
35
You can’t perform that action at this time.
0 commit comments