@@ -50,6 +50,31 @@ const getName = (node, src) => {
5050 return name
5151}
5252
53+ /**
54+ * Check type of node (dev only)
55+ * @param {node } node
56+ * @return {void } Console log predicted types
57+ */
58+ function checkType ( node ) {
59+ console . group ( node . name ?. escapedText ) ;
60+ const predictedTypes = Object . keys ( ts ) . reduce ( ( acc , key ) => {
61+ if ( typeof ts [ key ] !== "function" && ! key . startsWith ( "is" ) ) {
62+ return acc ;
63+ }
64+ try {
65+ if ( ts [ key ] ( node ) === true ) {
66+ acc . push ( key ) ;
67+ }
68+ } catch ( error ) {
69+ return acc ;
70+ }
71+ return acc ;
72+ } , [ ] ) ;
73+ console . log ( predictedTypes ) ;
74+ console . groupEnd ( ) ;
75+ }
76+
77+
5378/**
5479 * Fill missing method declaration
5580 *
@@ -65,10 +90,10 @@ const fillMethodComment = (comment, member, src) => {
6590 if ( ! comment . includes ( '@param' ) ) {
6691 comment = convertParams ( comment , member , src )
6792 }
68- if ( ts . isArrayTypeNode ( member . type ) ) {
93+ if ( member . type && ts . isArrayTypeNode ( member . type ) ) {
6994 comment = convertMembers ( comment , member . type , src )
7095 }
71- if ( ! comment . includes ( '@return' ) ) {
96+ if ( member . type && ! comment . includes ( '@return' ) ) {
7297 const returnType = getTypeName ( member . type , src )
7398 comment = appendComment ( comment , `@return {${ returnType } }` )
7499 }
@@ -175,7 +200,9 @@ module.exports = function typeConverter(src, filename = 'test.ts') {
175200 if ( jsDocNode ) {
176201 let comment = src . substring ( jsDocNode . pos , jsDocNode . end )
177202 const name = getName ( statement , src )
178-
203+ if ( ts . isFunctionDeclaration ( statement ) ) {
204+ return fillMethodComment ( comment , statement , src ) ;
205+ }
179206 if ( ts . isTypeAliasDeclaration ( statement ) ) {
180207 if ( ts . isFunctionTypeNode ( statement . type ) ) {
181208 comment = appendComment ( comment , `@typedef {function} ${ name } ` )
@@ -238,7 +265,7 @@ module.exports = function typeConverter(src, filename = 'test.ts') {
238265 const type = getTypeName ( member . type , src )
239266 memberComment = appendComment ( memberComment , `@type {${ type } }` )
240267 }
241- if ( member . type && ts . isFunctionLike ( member ) ) {
268+ if ( ts . isFunctionLike ( member ) ) {
242269 memberComment = fillMethodComment ( memberComment , member , src )
243270 }
244271 if ( modifiers . find ( ( m => m === 'static' ) ) ) {
0 commit comments