@@ -116,7 +116,10 @@ export function transformSchemaObjectWithComposition(
116
116
return ts . factory . createTypeReferenceNode ( enumType . name ) ;
117
117
}
118
118
const enumType = schemaObject . enum . map ( tsLiteral ) ;
119
- if ( ( Array . isArray ( schemaObject . type ) && schemaObject . type . includes ( "null" ) ) || schemaObject . nullable ) {
119
+ if (
120
+ ( ( Array . isArray ( schemaObject . type ) && schemaObject . type . includes ( "null" ) ) || schemaObject . nullable ) &&
121
+ ! schemaObject . default
122
+ ) {
120
123
enumType . push ( NULL ) ;
121
124
}
122
125
@@ -242,7 +245,7 @@ export function transformSchemaObjectWithComposition(
242
245
// if final type could be generated, return intersection of all members
243
246
if ( finalType ) {
244
247
// deprecated nullable
245
- if ( schemaObject . nullable ) {
248
+ if ( schemaObject . nullable && ! schemaObject . default ) {
246
249
return tsNullable ( [ finalType ] ) ;
247
250
}
248
251
return finalType ;
@@ -364,7 +367,7 @@ function transformSchemaObjectCore(schemaObject: SchemaObject, options: Transfor
364
367
// polymorphic, or 3.1 nullable
365
368
if ( Array . isArray ( schemaObject . type ) && ! Array . isArray ( schemaObject ) ) {
366
369
// skip any primitive types that appear in oneOf as well
367
- let uniqueTypes : ts . TypeNode [ ] = [ ] ;
370
+ const uniqueTypes : ts . TypeNode [ ] = [ ] ;
368
371
if ( Array . isArray ( schemaObject . oneOf ) ) {
369
372
for ( const t of schemaObject . type ) {
370
373
if (
@@ -383,11 +386,15 @@ function transformSchemaObjectCore(schemaObject: SchemaObject, options: Transfor
383
386
) ;
384
387
}
385
388
} else {
386
- uniqueTypes = schemaObject . type . map ( ( t ) =>
387
- t === "null" || t === null
388
- ? NULL
389
- : transformSchemaObject ( { ...schemaObject , type : t } as SchemaObject , options ) ,
390
- ) ;
389
+ for ( const t of schemaObject . type ) {
390
+ if ( t === "null" || t === null ) {
391
+ if ( ! schemaObject . default ) {
392
+ uniqueTypes . push ( NULL ) ;
393
+ }
394
+ } else {
395
+ uniqueTypes . push ( transformSchemaObject ( { ...schemaObject , type : t } as SchemaObject , options ) ) ;
396
+ }
397
+ }
391
398
}
392
399
return tsUnion ( uniqueTypes ) ;
393
400
}
0 commit comments