Skip to content

Commit 666f55e

Browse files
authored
perf: enum schemaObject.type 类型做兼容: 对数组中元素字符串和数字类型单独处理 (#129)
* perf: enum schemaObject.type 类型做兼容: 对数组中元素字符串和数字类型单独处理
1 parent a5f878f commit 666f55e

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/generator/serviceGenarator.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import {
7575
getLastRefName,
7676
getRefName,
7777
handleDuplicateTypeNames,
78+
isAllNumber,
7879
isAllNumeric,
7980
isArraySchemaObject,
8081
isBinaryArraySchemaObject,
@@ -1073,8 +1074,10 @@ export default class ServiceGenerator {
10731074
let enumStr = '';
10741075
let enumLabelTypeStr = '';
10751076

1076-
if (numberEnum.includes(schemaObject.type) || isAllNumeric(enumArray)) {
1077+
if (numberEnum.includes(schemaObject.type) || isAllNumber(enumArray)) {
10771078
enumStr = `{${map(enumArray, (value) => `"NUMBER_${value}"=${Number(value)}`).join(',')}}`;
1079+
} else if (isAllNumeric(enumArray)) {
1080+
enumStr = `{${map(enumArray, (value) => `"STRING_NUMBER_${value}"="${value}"`).join(',')}}`;
10781081
} else {
10791082
enumStr = `{${map(enumArray, (value) => `${value}="${value}"`).join(',')}}`;
10801083
}
@@ -1093,8 +1096,10 @@ export default class ServiceGenerator {
10931096
return `${value}:"${enumLabel}"`;
10941097
}).join(',')}}`;
10951098
} else {
1096-
if (numberEnum.includes(schemaObject.type) || isAllNumeric(enumArray)) {
1099+
if (numberEnum.includes(schemaObject.type) || isAllNumber(enumArray)) {
10971100
enumLabelTypeStr = `{${map(enumArray, (value) => `"NUMBER_${value}":${Number(value)}`).join(',')}}`;
1101+
} else if (isAllNumeric(enumArray)) {
1102+
enumLabelTypeStr = `{${map(enumArray, (value) => `"STRING_NUMBER_${value}":"${value}"`).join(',')}}`;
10981103
} else {
10991104
enumLabelTypeStr = `{${map(enumArray, (value) => `${value}:"${value}"`).join(',')}}`;
11001105
}

src/generator/util.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
isBoolean,
99
isEmpty,
1010
isNull,
11+
isNumber,
1112
isObject,
1213
isString,
1314
isUndefined,
@@ -483,3 +484,8 @@ export function resolveRefs(obj: OpenAPIObject, fields: string[]) {
483484
export function isAllNumeric(arr) {
484485
return every(arr, (item) => isString(item) && /^-?[0-9]+$/.test(item));
485486
}
487+
488+
// 检查数组每一项是否都是数字
489+
export function isAllNumber(arr) {
490+
return every(arr, (item) => isNumber(item));
491+
}

0 commit comments

Comments
 (0)