Skip to content

Commit e4e099d

Browse files
authored
fix: enums containing negative numbers (#1662)
1 parent 08ff135 commit e4e099d

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

packages/openapi-typescript/src/lib/ts.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,14 @@ export function tsLiteral(value: unknown): ts.TypeNode {
294294
return ts.factory.createIdentifier(JSON.stringify(value)) as unknown as ts.TypeNode;
295295
}
296296
if (typeof value === "number") {
297-
return ts.factory.createLiteralTypeNode(ts.factory.createNumericLiteral(value));
297+
const literal =
298+
value < 0
299+
? ts.factory.createPrefixUnaryExpression(
300+
ts.SyntaxKind.MinusToken,
301+
ts.factory.createNumericLiteral(Math.abs(value)),
302+
)
303+
: ts.factory.createNumericLiteral(value);
304+
return ts.factory.createLiteralTypeNode(literal);
298305
}
299306
if (typeof value === "boolean") {
300307
return value === true ? TRUE : FALSE;

packages/openapi-typescript/test/transform/schema-object/number.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ describe("transformSchemaObject > number", () => {
2121
[
2222
"enum",
2323
{
24-
given: { type: "number", enum: [50, 100, 200] },
25-
want: "50 | 100 | 200",
24+
given: { type: "number", enum: [-50, 50, 100, 200] },
25+
want: "-50 | 50 | 100 | 200",
2626
// options: DEFAULT_OPTIONS,
2727
},
2828
],

0 commit comments

Comments
 (0)