@@ -126,23 +126,25 @@ function extractComplexTypes(m: dom.ModuleDeclaration, interf: dom.InterfaceDecl
126126 if ( member . kind === 'property' && isExtractableType ( member . type ) ) {
127127 const name = `${ componentName } ${ pascalCase ( member . name ) } ` ;
128128 const extractedMember = createModuleMember ( name , member . type ) ;
129- extractedMember . flags = dom . DeclarationFlags . Export ;
130- m . members . push ( extractedMember ) ;
131- member . type = dom . create . namedTypeReference ( name ) ;
129+ if ( extractedMember ) {
130+ extractedMember . flags = dom . DeclarationFlags . Export ;
131+ m . members . push ( extractedMember ) ;
132+ member . type = createTypeReference ( name , member . type ) ;
133+ }
132134 }
133135 } ) ;
134136}
135137
136- type ExtractableType = dom . UnionType | dom . IntersectionType | dom . ObjectType ;
138+ type ExtractableType = dom . UnionType | dom . IntersectionType | dom . ObjectType | dom . ArrayTypeReference ;
137139
138140function isExtractableType ( type : dom . Type ) : type is ExtractableType {
139141 if ( typeof type === 'object' ) {
140- return [ 'union' , 'intersection' , 'object' ] . indexOf ( type . kind ) > - 1 ;
142+ return [ 'union' , 'intersection' , 'object' , 'array' ] . indexOf ( type . kind ) > - 1 ;
141143 }
142144 return false ;
143145}
144146
145- function createModuleMember ( name : string , type : ExtractableType ) : dom . ModuleMember {
147+ function createModuleMember ( name : string , type : ExtractableType ) : dom . ModuleMember | undefined {
146148 switch ( type . kind ) {
147149 case 'intersection' :
148150 case 'union' :
@@ -151,6 +153,17 @@ function createModuleMember(name: string, type: ExtractableType): dom.ModuleMemb
151153 const interf = dom . create . interface ( name ) ;
152154 interf . members = type . members ;
153155 return interf ;
156+ case 'array' :
157+ return isExtractableType ( type . type ) ? createModuleMember ( name , type . type ) : undefined ;
158+ }
159+ }
160+
161+ function createTypeReference ( name : string , type : ExtractableType ) : dom . TypeReference {
162+ const namedTypeReference = dom . create . namedTypeReference ( name ) ;
163+ if ( type . kind === 'array' ) {
164+ return dom . create . array ( namedTypeReference ) ;
165+ } else {
166+ return namedTypeReference ;
154167 }
155168}
156169
0 commit comments