@@ -23,6 +23,12 @@ function retrieveTypeName (
23
23
if ( type . isArray ( ) ) {
24
24
return `Array_${ retrieveTypeName ( type . getArrayElementType ( ) ! ) } `
25
25
}
26
+ if ( type . isIntersection ( ) ) {
27
+ return `Intersection_${ type . getIntersectionTypes ( ) . map ( type => retrieveTypeName ( type ) ) . join ( '_' ) } `
28
+ }
29
+ if ( type . isUnion ( ) ) {
30
+ return `Union_${ type . getUnionTypes ( ) . map ( type => retrieveTypeName ( type ) ) . join ( '_' ) } `
31
+ }
26
32
const typeName = type . getSymbol ( ) ?. getName ( )
27
33
if ( typeof typeName === 'undefined' ) {
28
34
return type . getText ( )
@@ -134,7 +140,9 @@ export function resolve (
134
140
switch ( helperName ) {
135
141
case 'Omit' :
136
142
case 'Pick' :
137
- const args = typeArguments [ 1 ] . getUnionTypes ( ) . map ( t => capitalizeFirstLetter ( String ( t . getLiteralValue ( ) ) ) )
143
+ const args = typeArguments [ 1 ] . isUnion ( )
144
+ ? typeArguments [ 1 ] . getUnionTypes ( ) . map ( t => capitalizeFirstLetter ( String ( t . getAliasSymbol ( ) ?. getName ( ) ?? t . getLiteralValue ( ) ) ) )
145
+ : [ capitalizeFirstLetter ( String ( typeArguments [ 1 ] . getLiteralValue ( ) ) ) ]
138
146
typeName = `${ retrieveTypeName ( subjectType ) } _With${ helperName === 'Omit' ? 'out' : '' } _${ args . join ( '_' ) } `
139
147
break
140
148
case 'Partial' :
@@ -148,7 +156,7 @@ export function resolve (
148
156
const subjectType = type . getTypeArguments ( ) [ 0 ] ?? type . getAliasTypeArguments ( ) [ 0 ]
149
157
const name = type . getSymbol ( ) ?. getEscapedName ( ) !== '__type' ? type . getSymbol ( ) ?. getEscapedName ( ) : helperName
150
158
typeName = `${ name } _${ retrieveTypeName ( subjectType ) } `
151
- } else if ( ( type . getAliasTypeArguments ( ) . length === 1 || type . getTypeArguments ( ) . length === 1 ) ) { // i.e. Serialized<{ datasource: Datasource }> -> Serialized_datasource
159
+ } else if ( ( type . getAliasTypeArguments ( ) . length === 1 || type . getTypeArguments ( ) . length === 1 ) && ( type . getTypeArguments ( ) [ 0 ] ?? type . getAliasTypeArguments ( ) [ 0 ] ) ?. isAnonymous ( ) === true ) { // i.e. Serialized<{ datasource: Datasource }> -> Serialized_datasource
152
160
const subjectType = type . getTypeArguments ( ) [ 0 ] ?? type . getAliasTypeArguments ( ) [ 0 ]
153
161
const name = type . getSymbol ( ) ?. getEscapedName ( ) !== '__type' ? type . getSymbol ( ) ?. getEscapedName ( ) : helperName
154
162
typeName = `${ name } _${ retrieveTypeName ( subjectType ) } `
0 commit comments