@@ -59,8 +59,10 @@ const getName = (node, src) => {
59
59
* @returns {string } modified jsDoc comment with appended @param tags
60
60
*
61
61
*/
62
- const convertParams = ( jsDoc = '' , node , src , parentName = null ) => {
63
- node . type . parameters . forEach ( parameter => {
62
+ const convertParams = ( jsDoc = '' , node , src ) => {
63
+ const parameters = node . type && node . type . parameters || node . parameters
64
+ if ( ! parameters ) { return }
65
+ parameters . forEach ( parameter => {
64
66
let name = getName ( parameter , src )
65
67
let comment = parameter . jsDoc && parameter . jsDoc [ 0 ] && parameter . jsDoc [ 0 ] . comment || ''
66
68
if ( parameter . questionToken ) {
@@ -88,12 +90,12 @@ let convertMembers = (jsDoc = '', type, src, parentName = null) => {
88
90
typesToCheck . push ( ...type . types )
89
91
}
90
92
typesToCheck . forEach ( type => {
91
- // Handling array defined like this: {alement1 : 'something'}[]
93
+ // Handling array defined like this: {element1 : 'something'}[]
92
94
if ( ts . isArrayTypeNode ( type ) && type . elementType ) {
93
95
jsDoc = convertMembers ( jsDoc , type . elementType , src , parentName ? parentName + '[]' : '[]' )
94
96
}
95
97
96
- // Handling Array<{element1: 'somethin '}>
98
+ // Handling Array<{element1: 'something '}>
97
99
if ( type . typeName && type . typeName . escapedText === 'Array' ) {
98
100
if ( type . typeArguments && type . typeArguments . length ) {
99
101
type . typeArguments . forEach ( subType => {
@@ -178,9 +180,9 @@ module.exports = function typeConverter(src, filename = 'test.ts') {
178
180
if ( ! member . type && ts . isFunctionLike ( member ) ) {
179
181
let type = getTypeName ( member , src )
180
182
memberComment = appendComment ( memberComment , `@type {${ type } }` )
181
- memberComment = appendComment ( memberComment , ` @method` )
183
+ memberComment = appendComment ( memberComment , ' @method' )
182
184
} else {
183
- memberComment = convertMembers ( memberComment , member . type , src , parentName = null )
185
+ memberComment = convertMembers ( memberComment , member . type , src )
184
186
let type = getTypeName ( member . type , src )
185
187
memberComment = appendComment ( memberComment , `@type {${ type } }` )
186
188
}
@@ -193,18 +195,24 @@ module.exports = function typeConverter(src, filename = 'test.ts') {
193
195
const className = getName ( statement , src )
194
196
statement . members . forEach ( member => {
195
197
if ( ! member . jsDoc ) { return }
196
- if ( ! ts . isPropertyDeclaration ( member ) ) { return }
197
198
let memberComment = src . substring ( member . jsDoc [ 0 ] . pos , member . jsDoc [ 0 ] . end )
198
199
const modifiers = ( member . modifiers || [ ] ) . map ( m => m . getText ( { text : src } ) )
199
- modifiers . forEach ( m => {
200
- if ( [ 'private' , 'public' , 'protected' ] . includes ( m ) ) {
201
- memberComment = appendComment ( memberComment , `@${ m } ` )
200
+ modifiers . forEach ( modifier => {
201
+ const allowedModifiers = [ 'abstract' , 'private' , 'public' , 'protected' ]
202
+ if ( allowedModifiers . includes ( modifier ) ) {
203
+ memberComment = appendComment ( memberComment , `@${ modifier } ` )
202
204
}
203
205
} )
204
- if ( member . type ) {
205
- memberComment = appendComment ( memberComment , `@type {${ getTypeName ( member . type , src ) } }` )
206
+ if ( member . type && ts . isPropertyDeclaration ( member ) ) {
207
+ const type = getTypeName ( member . type , src )
208
+ memberComment = appendComment ( memberComment , `@type {${ type } }` )
209
+ }
210
+ if ( member . type && ts . isFunctionLike ( member ) ) {
211
+ memberComment = appendComment ( memberComment , '@method' )
212
+ memberComment = convertParams ( memberComment , member , src )
213
+ memberComment = convertMembers ( memberComment , member . type , src )
214
+ memberComment = appendComment ( memberComment , `@return {${ getTypeName ( member . type , src ) } }` )
206
215
}
207
- getTypeName ( member , src )
208
216
if ( modifiers . find ( ( m => m === 'static' ) ) ) {
209
217
memberComment += '\n' + `${ className } .${ getName ( member , src ) } `
210
218
} else {
0 commit comments