File tree Expand file tree Collapse file tree 3 files changed +16
-4
lines changed Expand file tree Collapse file tree 3 files changed +16
-4
lines changed Original file line number Diff line number Diff line change 14271427 "createVector" : {
14281428 "overloads" : [
14291429 [
1430- null
1430+ " ...Number "
14311431 ]
14321432 ]
14331433 },
Original file line number Diff line number Diff line change @@ -92,6 +92,8 @@ function typeObject(node) {
9292 return { type : signature } ;
9393 } else if ( node . type === 'ArrayType' ) {
9494 return { type : `[${ node . elements . map ( e => typeObject ( e ) . type ) . join ( ', ' ) } ]` } ;
95+ } else if ( node . type === 'RestType' ) {
96+ return { type : typeObject ( node . expression ) . type , rest : true } ;
9597 } else {
9698 // TODO
9799 // - handle record types
@@ -518,19 +520,22 @@ function cleanUpClassItems(data) {
518520
519521 const processOverload = overload => {
520522 if ( overload . params ) {
521- return Object . values ( overload . params ) . map ( param => processOptionalParam ( param ) ) ;
523+ return Object . values ( overload . params ) . map ( param => processParam ( param ) ) ;
522524 }
523525 return overload ;
524526 }
525527
526528 // To simplify `parameterData.json`, instead of having a separate field for
527529 // optional parameters, we'll add a ? to the end of parameter type to
528530 // indicate that it's optional.
529- const processOptionalParam = param => {
531+ const processParam = param => {
530532 let type = param . type ;
531533 if ( param . optional ) {
532534 type += '?' ;
533535 }
536+ if ( param . rest ) {
537+ type = `...${ type } ` ;
538+ }
534539 return type ;
535540 }
536541
Original file line number Diff line number Diff line change @@ -392,6 +392,8 @@ export function generateTypeFromTag(param) {
392392 const innerTypeStrs = param . type . elements . map ( e => generateTypeFromTag ( { type : e } ) ) ;
393393 return `[${ innerTypeStrs . join ( ', ' ) } ]` ;
394394 }
395+ case 'RestType' :
396+ return `${ generateTypeFromTag ( { type : param . type . expression } ) } []` ;
395397 default :
396398 return 'any' ;
397399 }
@@ -420,6 +422,7 @@ export function generateTypeFromTag(param) {
420422 if ( ! param ) return 'any' ;
421423
422424 let type = param . type ;
425+ let prefix = '' ;
423426 const isOptional = param . type ?. type === 'OptionalType' ;
424427 if ( typeof type === 'string' ) {
425428 type = normalizeTypeName ( type ) ;
@@ -429,7 +432,11 @@ export function generateTypeFromTag(param) {
429432 type = 'any' ;
430433 }
431434
432- return `${ param . name } ${ isOptional ? '?' : '' } : ${ type } ` ;
435+ if ( param . type ?. type === 'RestType' ) {
436+ prefix = '...' ;
437+ }
438+
439+ return `${ prefix } ${ param . name } ${ isOptional ? '?' : '' } : ${ type } ` ;
433440 }
434441
435442 export function generateFunctionDeclaration ( funcDoc ) {
You can’t perform that action at this time.
0 commit comments