@@ -126,23 +126,25 @@ function extractComplexTypes(m: dom.ModuleDeclaration, interf: dom.InterfaceDecl
126
126
if ( member . kind === 'property' && isExtractableType ( member . type ) ) {
127
127
const name = `${ componentName } ${ pascalCase ( member . name ) } ` ;
128
128
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
+ }
132
134
}
133
135
} ) ;
134
136
}
135
137
136
- type ExtractableType = dom . UnionType | dom . IntersectionType | dom . ObjectType ;
138
+ type ExtractableType = dom . UnionType | dom . IntersectionType | dom . ObjectType | dom . ArrayTypeReference ;
137
139
138
140
function isExtractableType ( type : dom . Type ) : type is ExtractableType {
139
141
if ( typeof type === 'object' ) {
140
- return [ 'union' , 'intersection' , 'object' ] . indexOf ( type . kind ) > - 1 ;
142
+ return [ 'union' , 'intersection' , 'object' , 'array' ] . indexOf ( type . kind ) > - 1 ;
141
143
}
142
144
return false ;
143
145
}
144
146
145
- function createModuleMember ( name : string , type : ExtractableType ) : dom . ModuleMember {
147
+ function createModuleMember ( name : string , type : ExtractableType ) : dom . ModuleMember | undefined {
146
148
switch ( type . kind ) {
147
149
case 'intersection' :
148
150
case 'union' :
@@ -151,6 +153,17 @@ function createModuleMember(name: string, type: ExtractableType): dom.ModuleMemb
151
153
const interf = dom . create . interface ( name ) ;
152
154
interf . members = type . members ;
153
155
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 ;
154
167
}
155
168
}
156
169
0 commit comments