@@ -112,7 +112,18 @@ export function resolveEnumObject(params: {
112112 let enumStr = '' ;
113113 let enumLabelTypeStr = '' ;
114114
115- if ( numberEnum . includes ( schemaObject . type ) || isAllNumber ( enumArray ) ) {
115+ // 获取实际的类型(处理 OpenAPI 3.1 的 type 数组情况)
116+ const getActualType = ( type : typeof schemaObject . type ) : string => {
117+ if ( Array . isArray ( type ) ) {
118+ // 如果是数组,返回第一个非 null 类型
119+ return type . find ( ( t ) => t !== 'null' ) || 'string' ;
120+ }
121+ return type ;
122+ } ;
123+
124+ const actualType = getActualType ( schemaObject . type ) ;
125+
126+ if ( numberEnum . includes ( actualType ) || isAllNumber ( enumArray ) ) {
116127 if ( config . isSupportParseEnumDesc && schemaObject . description ) {
117128 const enumMap = parseDescriptionEnum ( schemaObject . description ) ;
118129 enumStr = `{${ map ( enumArray , ( value ) => {
@@ -151,7 +162,7 @@ export function resolveEnumObject(params: {
151162 return `${ value } :"${ enumLabel } "` ;
152163 } ) . join ( ',' ) } }`;
153164 } else {
154- if ( numberEnum . includes ( schemaObject . type ) || isAllNumber ( enumArray ) ) {
165+ if ( numberEnum . includes ( actualType ) || isAllNumber ( enumArray ) ) {
155166 if (
156167 ( config . isSupportParseEnumDesc || config . supportParseEnumDescByReg ) &&
157168 schemaObject . description
@@ -334,7 +345,13 @@ export function resolveRefObject<T>(params: {
334345 resolvedType = ( refResolved as { type ?: string } ) ?. type ;
335346 } else {
336347 const schemaObj : SchemaObject = schema ;
337- resolvedType = schemaObj . type ;
348+ // 处理 OpenAPI 3.1 的 type 数组情况
349+ if ( Array . isArray ( schemaObj . type ) ) {
350+ // 如果是数组,使用第一个非 null 类型
351+ resolvedType = schemaObj . type . find ( ( t ) => t !== 'null' ) || 'string' ;
352+ } else {
353+ resolvedType = schemaObj . type ;
354+ }
338355 }
339356
340357 const finalSchema = schema as SchemaObject ;
0 commit comments