diff --git a/packages/openapi-typescript/src/lib/ts.ts b/packages/openapi-typescript/src/lib/ts.ts index d1f41eb88..3bfb63764 100644 --- a/packages/openapi-typescript/src/lib/ts.ts +++ b/packages/openapi-typescript/src/lib/ts.ts @@ -406,8 +406,10 @@ function sanitizeMemberName(name: string) { /** Sanitize TS enum member expression */ export function tsEnumMember(value: string | number, metadata: { name?: string; description?: string | null } = {}) { - let name = metadata.name ?? String(value); - if (!JS_PROPERTY_INDEX_RE.test(name)) { + let name: string | ts.StringLiteral = metadata.name ?? String(value); + if (name === "") { + name = ts.factory.createStringLiteral(name); + } else if (!JS_PROPERTY_INDEX_RE.test(name)) { if (Number(name[0]) >= 0) { name = `Value${name}`.replace(".", "_"); // don't forged decimals; } else if (name[0] === "-") { diff --git a/packages/openapi-typescript/test/lib/ts.test.ts b/packages/openapi-typescript/test/lib/ts.test.ts index 79e5b4571..9e0e2869c 100644 --- a/packages/openapi-typescript/test/lib/ts.test.ts +++ b/packages/openapi-typescript/test/lib/ts.test.ts @@ -187,6 +187,14 @@ describe("tsEnum", () => { }`); }); + test("empty string member", () => { + expect(astToString(tsEnum("/my/enum/", ["", "foo", "bar"])).trim()).toBe(`enum MyEnum { + "" = "", + foo = "foo", + bar = "bar" +}`); + }); + test("with setting: export", () => { expect( astToString(