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