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 1427
1427
"createVector" : {
1428
1428
"overloads" : [
1429
1429
[
1430
- null
1430
+ " ...Number "
1431
1431
]
1432
1432
]
1433
1433
},
Original file line number Diff line number Diff line change @@ -92,6 +92,8 @@ function typeObject(node) {
92
92
return { type : signature } ;
93
93
} else if ( node . type === 'ArrayType' ) {
94
94
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 } ;
95
97
} else {
96
98
// TODO
97
99
// - handle record types
@@ -518,19 +520,22 @@ function cleanUpClassItems(data) {
518
520
519
521
const processOverload = overload => {
520
522
if ( overload . params ) {
521
- return Object . values ( overload . params ) . map ( param => processOptionalParam ( param ) ) ;
523
+ return Object . values ( overload . params ) . map ( param => processParam ( param ) ) ;
522
524
}
523
525
return overload ;
524
526
}
525
527
526
528
// To simplify `parameterData.json`, instead of having a separate field for
527
529
// optional parameters, we'll add a ? to the end of parameter type to
528
530
// indicate that it's optional.
529
- const processOptionalParam = param => {
531
+ const processParam = param => {
530
532
let type = param . type ;
531
533
if ( param . optional ) {
532
534
type += '?' ;
533
535
}
536
+ if ( param . rest ) {
537
+ type = `...${ type } ` ;
538
+ }
534
539
return type ;
535
540
}
536
541
Original file line number Diff line number Diff line change @@ -392,6 +392,8 @@ export function generateTypeFromTag(param) {
392
392
const innerTypeStrs = param . type . elements . map ( e => generateTypeFromTag ( { type : e } ) ) ;
393
393
return `[${ innerTypeStrs . join ( ', ' ) } ]` ;
394
394
}
395
+ case 'RestType' :
396
+ return `${ generateTypeFromTag ( { type : param . type . expression } ) } []` ;
395
397
default :
396
398
return 'any' ;
397
399
}
@@ -420,6 +422,7 @@ export function generateTypeFromTag(param) {
420
422
if ( ! param ) return 'any' ;
421
423
422
424
let type = param . type ;
425
+ let prefix = '' ;
423
426
const isOptional = param . type ?. type === 'OptionalType' ;
424
427
if ( typeof type === 'string' ) {
425
428
type = normalizeTypeName ( type ) ;
@@ -429,7 +432,11 @@ export function generateTypeFromTag(param) {
429
432
type = 'any' ;
430
433
}
431
434
432
- return `${ param . name } ${ isOptional ? '?' : '' } : ${ type } ` ;
435
+ if ( param . type ?. type === 'RestType' ) {
436
+ prefix = '...' ;
437
+ }
438
+
439
+ return `${ prefix } ${ param . name } ${ isOptional ? '?' : '' } : ${ type } ` ;
433
440
}
434
441
435
442
export function generateFunctionDeclaration ( funcDoc ) {
You can’t perform that action at this time.
0 commit comments