@@ -25,8 +25,10 @@ export class Printer {
2525 ] . join ( separator ) ;
2626 }
2727
28- private isUnionUndefined ( union : ts . UnionType ) {
29- return union . types . some ( ( t ) => t . flags & ts . TypeFlags . Undefined ) ;
28+ private containsUndefined ( type : ts . Type ) : boolean {
29+ return type . isUnion ( )
30+ ? type . types . some ( ( t ) => t . flags & ts . TypeFlags . Undefined )
31+ : ! ! ( type . flags & ts . TypeFlags . Undefined ) ;
3032 }
3133
3234 private printPrimitiveType ( type : ts . Type ) : string {
@@ -80,30 +82,26 @@ export class Printer {
8082 const propType = this . checker . getTypeOfSymbol ( prop ) ;
8183 props [ prop . getName ( ) ] = {
8284 value : this . printType ( this . checker . getTypeOfSymbol ( prop ) , true ) ,
83- isOptional : propType . isUnion ( )
84- ? this . isUnionUndefined ( propType )
85- : ! ! ( propType . flags & ts . TypeFlags . Undefined ) ,
85+ isOptional : this . containsUndefined ( propType ) ,
8686 } ;
8787 }
8888
8989 const parts : string [ ] = [ ] ;
90- for ( const [ propName , propData ] of Object . entries ( props ) ) {
91- const questionMark = propData . isOptional ? "?" : "" ;
92- parts . push (
93- `"${ escapeQuotes ( propName ) } "${ questionMark } : ${ propData . value } ,` ,
94- ) ;
90+ for ( const [ propName , { isOptional, value } ] of Object . entries ( props ) ) {
91+ const questionMark = isOptional ? "?" : "" ;
92+ parts . push ( `"${ escapeQuotes ( propName ) } "${ questionMark } : ${ value } ,` ) ;
9593 }
9694
9795 return Object . keys ( props ) . length > 0 ? `{\n${ parts . join ( "\n" ) } \n}` : "" ;
9896 } else if (
99- type . isLiteral ( ) ||
100- type . flags & ts . TypeFlags . BooleanLiteral ||
101- type . flags & ts . TypeFlags . String ||
102- type . flags & ts . TypeFlags . Number ||
103- type . flags & ts . TypeFlags . BigInt ||
104- type . flags & ts . TypeFlags . Any ||
105- type . flags & ts . TypeFlags . Unknown ||
106- type . flags & ts . TypeFlags . Null
97+ type . isLiteral ( )
98+ || type . flags & ts . TypeFlags . BooleanLiteral
99+ || type . flags & ts . TypeFlags . String
100+ || type . flags & ts . TypeFlags . Number
101+ || type . flags & ts . TypeFlags . BigInt
102+ || type . flags & ts . TypeFlags . Any
103+ || type . flags & ts . TypeFlags . Unknown
104+ || type . flags & ts . TypeFlags . Null
107105 ) {
108106 return this . printPrimitiveType ( type ) ;
109107 } else if ( type . flags & ts . TypeFlags . Undefined ) {
0 commit comments