@@ -1333,20 +1333,20 @@ namespace ts {
1333
1333
*/
1334
1334
export function arrayToMap < T > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => string ) : Map < T > ;
1335
1335
export function arrayToMap < T , U > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => string , makeValue : ( value : T ) => U ) : Map < U > ;
1336
- export function arrayToMap < T , U > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => string , makeValue ? : ( value : T ) => U ) : Map < T | U > {
1336
+ export function arrayToMap < T , U > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => string , makeValue : ( value : T ) => T | U = identity ) : Map < T | U > {
1337
1337
const result = createMap < T | U > ( ) ;
1338
1338
for ( const value of array ) {
1339
- result . set ( makeKey ( value ) , makeValue ? makeValue ( value ) : value ) ;
1339
+ result . set ( makeKey ( value ) , makeValue ( value ) ) ;
1340
1340
}
1341
1341
return result ;
1342
1342
}
1343
1343
1344
1344
export function arrayToNumericMap < T > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => number ) : T [ ] ;
1345
- export function arrayToNumericMap < T , V > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => number , makeValue : ( value : T ) => V ) : V [ ] ;
1346
- export function arrayToNumericMap < T , V > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => number , makeValue ? : ( value : T ) => V ) : V [ ] {
1347
- const result : V [ ] = [ ] ;
1345
+ export function arrayToNumericMap < T , U > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => number , makeValue : ( value : T ) => U ) : U [ ] ;
1346
+ export function arrayToNumericMap < T , U > ( array : ReadonlyArray < T > , makeKey : ( value : T ) => number , makeValue : ( value : T ) => T | U = identity ) : ( T | U ) [ ] {
1347
+ const result : ( T | U ) [ ] = [ ] ;
1348
1348
for ( const value of array ) {
1349
- result [ makeKey ( value ) ] = makeValue ? makeValue ( value ) : value as any as V ;
1349
+ result [ makeKey ( value ) ] = makeValue ( value ) ;
1350
1350
}
1351
1351
return result ;
1352
1352
}
@@ -1362,6 +1362,20 @@ namespace ts {
1362
1362
return arrayToMap < any , true > ( array , makeKey || ( s => s ) , ( ) => true ) ;
1363
1363
}
1364
1364
1365
+ export function arrayToMultiMap < T > ( values : ReadonlyArray < T > , makeKey : ( value : T ) => string ) : MultiMap < T > ;
1366
+ export function arrayToMultiMap < T , U > ( values : ReadonlyArray < T > , makeKey : ( value : T ) => string , makeValue : ( value : T ) => U ) : MultiMap < U > ;
1367
+ export function arrayToMultiMap < T , U > ( values : ReadonlyArray < T > , makeKey : ( value : T ) => string , makeValue : ( value : T ) => T | U = identity ) : MultiMap < T | U > {
1368
+ const result = createMultiMap < T | U > ( ) ;
1369
+ for ( const value of values ) {
1370
+ result . add ( makeKey ( value ) , makeValue ( value ) ) ;
1371
+ }
1372
+ return result ;
1373
+ }
1374
+
1375
+ export function group < T > ( values : ReadonlyArray < T > , getGroupId : ( value : T ) => string ) : ReadonlyArray < ReadonlyArray < T > > {
1376
+ return arrayFrom ( arrayToMultiMap ( values , getGroupId ) . values ( ) ) ;
1377
+ }
1378
+
1365
1379
export function cloneMap ( map : SymbolTable ) : SymbolTable ;
1366
1380
export function cloneMap < T > ( map : ReadonlyMap < T > ) : Map < T > ;
1367
1381
export function cloneMap < T > ( map : ReadonlyUnderscoreEscapedMap < T > ) : UnderscoreEscapedMap < T > ;
@@ -1438,14 +1452,6 @@ namespace ts {
1438
1452
}
1439
1453
}
1440
1454
1441
- export function group < T > ( values : ReadonlyArray < T > , getGroupId : ( value : T ) => string ) : ReadonlyArray < ReadonlyArray < T > > {
1442
- const groupIdToGroup = createMultiMap < T > ( ) ;
1443
- for ( const value of values ) {
1444
- groupIdToGroup . add ( getGroupId ( value ) , value ) ;
1445
- }
1446
- return arrayFrom ( groupIdToGroup . values ( ) ) ;
1447
- }
1448
-
1449
1455
/**
1450
1456
* Tests whether a value is an array.
1451
1457
*/
0 commit comments