diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index c026b838db4a..aa34f1e6b446 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -588,6 +588,10 @@ public String toVarName(String name) { return nameMapping.get(name); } + // translate @ for properties (like @type) to at_. + // Otherwise an additional "type" property will lead to duplicates + name = name.replaceAll("^@", "at_"); + name = sanitizeName(name, "[^\\w$]"); if ("_".equals(name)) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java index b8e2e2eb7a8f..d590def020d3 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java @@ -128,6 +128,18 @@ public void toVarName() { codegen.processOpts(); Assert.assertEquals(codegen.toVarName("valid_var"), "valid_var"); } + + @Test + public void toVarNameWithAtSign() { + TypeScriptFetchClientCodegen codegen = new TypeScriptFetchClientCodegen(); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "atId"); + + codegen = new TypeScriptFetchClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.MODEL_PROPERTY_NAMING, "original"); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "at_id"); + } @Test public void toEnumVarName() { 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 e3acfc556211..f7a88faf8346 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 @@ -39,6 +39,18 @@ public void toVarName() { Assert.assertEquals(codegen.toVarName("valid_var"), "validVar"); } + @Test + public void toVarNameWithAtSign() { + TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen(); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "at_id"); + + codegen = new TypeScriptAngularClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.MODEL_PROPERTY_NAMING, "camelCase"); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "atId"); + } + @Test public void toEnumVarName() { TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen();