@@ -66,9 +66,26 @@ export const valueTypeFormat = (value: any, valueType?: WorkflowIOValueTypeEnum)
6666 return false ;
6767 } ;
6868
69- // 1. any值,忽略格式化
70- if ( value === undefined || value === null ) return value ;
71- if ( ! valueType || valueType === WorkflowIOValueTypeEnum . any ) return value ;
69+ // Handle null/undefined, return default value by type
70+ if ( value === undefined || value === null ) {
71+ if ( ! valueType || valueType === WorkflowIOValueTypeEnum . any ) return value ;
72+
73+ // Default value map (use function to ensure new reference each time)
74+ const defaultValueMap : Partial < Record < WorkflowIOValueTypeEnum , ( ) => any > > = {
75+ [ WorkflowIOValueTypeEnum . string ] : ( ) => '' ,
76+ [ WorkflowIOValueTypeEnum . number ] : ( ) => 0 ,
77+ [ WorkflowIOValueTypeEnum . boolean ] : ( ) => false ,
78+ [ WorkflowIOValueTypeEnum . arrayString ] : ( ) => [ ] ,
79+ [ WorkflowIOValueTypeEnum . arrayNumber ] : ( ) => [ ] ,
80+ [ WorkflowIOValueTypeEnum . arrayBoolean ] : ( ) => [ ] ,
81+ [ WorkflowIOValueTypeEnum . arrayObject ] : ( ) => [ ] ,
82+ [ WorkflowIOValueTypeEnum . arrayAny ] : ( ) => [ ] ,
83+ [ WorkflowIOValueTypeEnum . object ] : ( ) => ( { } )
84+ } ;
85+
86+ const getDefaultValue = defaultValueMap [ valueType ] ;
87+ return getDefaultValue ? getDefaultValue ( ) : value ;
88+ }
7289
7390 // Password check
7491 if ( valueType === WorkflowIOValueTypeEnum . string && isSecretValue ( value ) ) return value ;
@@ -78,7 +95,7 @@ export const valueTypeFormat = (value: any, valueType?: WorkflowIOValueTypeEnum)
7895 ( valueType === WorkflowIOValueTypeEnum . string && typeof value === 'string' ) ||
7996 ( valueType === WorkflowIOValueTypeEnum . number && typeof value === 'number' ) ||
8097 ( valueType === WorkflowIOValueTypeEnum . boolean && typeof value === 'boolean' ) ||
81- ( valueType . startsWith ( 'array' ) && Array . isArray ( value ) ) ||
98+ ( valueType ? .startsWith ( 'array' ) && Array . isArray ( value ) ) ||
8299 ( valueType === WorkflowIOValueTypeEnum . object && typeof value === 'object' ) ||
83100 ( valueType === WorkflowIOValueTypeEnum . chatHistory &&
84101 ( Array . isArray ( value ) || typeof value === 'number' ) ) ||
@@ -117,7 +134,7 @@ export const valueTypeFormat = (value: any, valueType?: WorkflowIOValueTypeEnum)
117134 }
118135
119136 // 4.4 数组类型(这里 value 不是数组类型)(TODO: 嵌套数据类型转化)
120- if ( valueType . startsWith ( 'array' ) ) {
137+ if ( valueType ? .startsWith ( 'array' ) ) {
121138 if ( isObjectString ( value ) ) {
122139 try {
123140 return json5 . parse ( value ) ;
@@ -132,7 +149,7 @@ export const valueTypeFormat = (value: any, valueType?: WorkflowIOValueTypeEnum)
132149 WorkflowIOValueTypeEnum . datasetQuote ,
133150 WorkflowIOValueTypeEnum . selectDataset ,
134151 WorkflowIOValueTypeEnum . selectApp
135- ] . includes ( valueType )
152+ ] . includes ( valueType as any )
136153 ) {
137154 if ( isObjectString ( value ) ) {
138155 try {
0 commit comments