File tree Expand file tree Collapse file tree
src/api/writer-generator/typescript Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -246,24 +246,25 @@ export const generateSliceGetters = (
246246 const isUnbounded = sliceDef . array && ( sliceDef . max === 0 || sliceDef . max === undefined ) ;
247247
248248 if ( isUnbounded ) {
249- // Unbounded slice: return an array
249+ // Unbounded slice: return an array or undefined
250250 const defaultReturn = defaultMode === "raw" ? `${ baseType } []` : `${ flatTypeName } []` ;
251251
252252 // Overload signatures
253- w . lineSM ( `public ${ getMethodName } (mode: 'flat'): ${ flatTypeName } []` ) ;
254- w . lineSM ( `public ${ getMethodName } (mode: 'raw'): ${ baseType } []` ) ;
255- w . lineSM ( `public ${ getMethodName } (): ${ defaultReturn } ` ) ;
253+ w . lineSM ( `public ${ getMethodName } (mode: 'flat'): ${ flatTypeName } [] | undefined ` ) ;
254+ w . lineSM ( `public ${ getMethodName } (mode: 'raw'): ${ baseType } [] | undefined ` ) ;
255+ w . lineSM ( `public ${ getMethodName } (): ${ defaultReturn } | undefined ` ) ;
256256
257257 // Implementation
258258 w . curlyBlock (
259259 [
260260 "public" ,
261261 getMethodName ,
262- `(mode: 'flat' | 'raw' = '${ defaultMode } '): (${ flatTypeName } | ${ baseType } )[]` ,
262+ `(mode: 'flat' | 'raw' = '${ defaultMode } '): (${ flatTypeName } | ${ baseType } )[] | undefined ` ,
263263 ] ,
264264 ( ) => {
265265 w . line ( `const match = ${ matchRef } ` ) ;
266266 w . line ( `const items = getArraySliceAll(${ fieldAccess } , match)` ) ;
267+ w . line ( "if (items.length === 0) return undefined" ) ;
267268 if ( sliceDef . typeDiscriminator ) {
268269 w . line ( `if (mode === 'raw') return items as ${ baseType } []` ) ;
269270 } else {
You can’t perform that action at this time.
0 commit comments