@@ -104,6 +104,7 @@ function handleTypeParameters(value: Value | Node) {
104104 {
105105 name : string ( node . values [ 0 ] ) ,
106106 ...optionalMember ( "default" , "string" , node . properties ?. default ) ,
107+ ...optionalMember ( "extends" , "string" , node . properties ?. extends ) ,
107108 } ,
108109 ] ,
109110 } ;
@@ -448,7 +449,23 @@ function handleMember(c: Node): DeepPartial<Member> {
448449 * @param node The typedef node to handle.
449450 */
450451function handleTypedef ( node : Node ) : DeepPartial < TypeDef > {
451- const typeNodes = node . children . filter ( ( c ) => c . name === "type" ) ;
452+ const typeNodes : Node [ ] = [ ] ;
453+ let typeParameters = { } ;
454+ for ( const child of node . children ) {
455+ switch ( child . name ) {
456+ case "type" :
457+ typeNodes . push ( child ) ;
458+ break ;
459+ case "typeParameters" : {
460+ typeParameters = handleTypeParameters ( child ) ;
461+ break ;
462+ }
463+ default :
464+ throw new Error (
465+ `Unexpected child "${ child . name } " in typedef "${ node . values [ 0 ] } "` ,
466+ ) ;
467+ }
468+ }
452469 return {
453470 name : string ( node . values [ 0 ] ) ,
454471 ...handleTyped ( typeNodes ) ,
@@ -458,6 +475,7 @@ function handleTypedef(node: Node): DeepPartial<TypeDef> {
458475 node . properties ?. legacyNamespace ,
459476 ) ,
460477 ...optionalMember ( "overrideType" , "string" , node . properties ?. overrideType ) ,
478+ ...typeParameters ,
461479 } ;
462480}
463481
0 commit comments