@@ -142,6 +142,11 @@ export function intersperse<T>(input: T[], element: T): T[] {
142
142
*
143
143
* @internal
144
144
*/
145
+ export function every < T , U extends T > ( array : readonly T [ ] , callback : ( element : T , index : number ) => element is U ) : array is readonly U [ ] ;
146
+ /** @internal */
147
+ export function every < T , U extends T > ( array : readonly T [ ] | undefined , callback : ( element : T , index : number ) => element is U ) : array is readonly U [ ] | undefined ;
148
+ /** @internal */
149
+ export function every < T > ( array : readonly T [ ] | undefined , callback : ( element : T , index : number ) => boolean ) : boolean ;
145
150
export function every < T > ( array : readonly T [ ] | undefined , callback : ( element : T , index : number ) => boolean ) : boolean {
146
151
if ( array ) {
147
152
for ( let i = 0 ; i < array . length ; i ++ ) {
@@ -478,7 +483,7 @@ export function sameFlatMap<T>(array: T[], mapfn: (x: T, i: number) => T | reado
478
483
/** @internal */
479
484
export function sameFlatMap < T > ( array : readonly T [ ] , mapfn : ( x : T , i : number ) => T | readonly T [ ] ) : readonly T [ ] ;
480
485
/** @internal */
481
- export function sameFlatMap < T > ( array : T [ ] , mapfn : ( x : T , i : number ) => T | T [ ] ) : T [ ] {
486
+ export function sameFlatMap < T > ( array : readonly T [ ] , mapfn : ( x : T , i : number ) => T | readonly T [ ] ) : readonly T [ ] {
482
487
let result : T [ ] | undefined ;
483
488
if ( array ) {
484
489
for ( let i = 0 ; i < array . length ; i ++ ) {
@@ -703,11 +708,19 @@ export function concatenate<T>(array1: T[], array2: T[]): T[];
703
708
/** @internal */
704
709
export function concatenate < T > ( array1 : readonly T [ ] , array2 : readonly T [ ] ) : readonly T [ ] ;
705
710
/** @internal */
706
- export function concatenate < T > ( array1 : T [ ] | undefined , array2 : T [ ] | undefined ) : T [ ] ;
711
+ export function concatenate < T > ( array1 : T [ ] , array2 : T [ ] | undefined ) : T [ ] ; // eslint-disable-line @typescript-eslint/unified-signatures
712
+ /** @internal */
713
+ export function concatenate < T > ( array1 : T [ ] | undefined , array2 : T [ ] ) : T [ ] ; // eslint-disable-line @typescript-eslint/unified-signatures
714
+ /** @internal */
715
+ export function concatenate < T > ( array1 : readonly T [ ] , array2 : readonly T [ ] | undefined ) : readonly T [ ] ; // eslint-disable-line @typescript-eslint/unified-signatures
716
+ /** @internal */
717
+ export function concatenate < T > ( array1 : readonly T [ ] | undefined , array2 : readonly T [ ] ) : readonly T [ ] ; // eslint-disable-line @typescript-eslint/unified-signatures
707
718
/** @internal */
708
- export function concatenate < T > ( array1 : readonly T [ ] | undefined , array2 : readonly T [ ] | undefined ) : readonly T [ ] ;
719
+ export function concatenate < T > ( array1 : T [ ] | undefined , array2 : T [ ] | undefined ) : T [ ] | undefined ;
709
720
/** @internal */
710
- export function concatenate < T > ( array1 : T [ ] , array2 : T [ ] ) : T [ ] {
721
+ export function concatenate < T > ( array1 : readonly T [ ] | undefined , array2 : readonly T [ ] | undefined ) : readonly T [ ] | undefined ;
722
+ /** @internal */
723
+ export function concatenate < T > ( array1 : readonly T [ ] | undefined , array2 : readonly T [ ] | undefined ) : readonly T [ ] | undefined {
711
724
if ( ! some ( array2 ) ) return array1 ;
712
725
if ( ! some ( array1 ) ) return array2 ;
713
726
return [ ...array1 , ...array2 ] ;
@@ -856,7 +869,7 @@ export function detectSortCaseSensitivity(array: readonly string[], useEslintOrd
856
869
/** @internal */
857
870
export function detectSortCaseSensitivity < T > ( array : readonly T [ ] , useEslintOrdering : boolean , getString : ( element : T ) => string ) : SortKind ;
858
871
/** @internal */
859
- export function detectSortCaseSensitivity < T > ( array : readonly T [ ] , useEslintOrdering : boolean , getString ?: ( element : T ) => string ) : SortKind {
872
+ export function detectSortCaseSensitivity < T > ( array : readonly T [ ] , useEslintOrdering ? : boolean , getString ?: ( element : T ) => string ) : SortKind {
860
873
let kind = SortKind . Both ;
861
874
if ( array . length < 2 ) return kind ;
862
875
const caseSensitiveComparer = getString
@@ -915,7 +928,7 @@ export function compact<T>(array: T[]): T[]; // eslint-disable-line @typescript-
915
928
/** @internal */
916
929
export function compact < T > ( array : readonly T [ ] ) : readonly T [ ] ; // eslint-disable-line @typescript-eslint/unified-signatures
917
930
/** @internal */
918
- export function compact < T > ( array : T [ ] ) : T [ ] {
931
+ export function compact < T > ( array : readonly T [ ] ) : readonly T [ ] {
919
932
let result : T [ ] | undefined ;
920
933
if ( array ) {
921
934
for ( let i = 0 ; i < array . length ; i ++ ) {
@@ -998,11 +1011,12 @@ export function append<T>(to: T[] | undefined, value: T | undefined): T[] | unde
998
1011
/** @internal */
999
1012
export function append < T > ( to : Push < T > , value : T | undefined ) : void ;
1000
1013
/** @internal */
1001
- export function append < T > ( to : T [ ] , value : T | undefined ) : T [ ] | undefined {
1002
- if ( value === undefined ) return to ;
1014
+ export function append < T > ( to : Push < T > | T [ ] | undefined , value : T | undefined ) : T [ ] | undefined {
1015
+ // If to is Push<T>, return value is void, so safe to cast to T[].
1016
+ if ( value === undefined ) return to as T [ ] ;
1003
1017
if ( to === undefined ) return [ value ] ;
1004
1018
to . push ( value ) ;
1005
- return to ;
1019
+ return to as T [ ] ;
1006
1020
}
1007
1021
1008
1022
/**
@@ -1315,7 +1329,7 @@ export function reduceLeft<T, U>(array: readonly T[] | undefined, f: (memo: U, v
1315
1329
/** @internal */
1316
1330
export function reduceLeft < T > ( array : readonly T [ ] , f : ( memo : T , value : T , i : number ) => T ) : T | undefined ;
1317
1331
/** @internal */
1318
- export function reduceLeft < T > ( array : T [ ] , f : ( memo : T , value : T , i : number ) => T , initial ?: T , start ?: number , count ?: number ) : T | undefined {
1332
+ export function reduceLeft < T > ( array : readonly T [ ] | undefined , f : ( memo : T , value : T , i : number ) => T , initial ?: T , start ?: number , count ?: number ) : T | undefined {
1319
1333
if ( array && array . length > 0 ) {
1320
1334
const size = array . length ;
1321
1335
if ( size > 0 ) {
@@ -1867,11 +1881,7 @@ export function isNumber(x: unknown): x is number {
1867
1881
}
1868
1882
1869
1883
/** @internal */
1870
- export function tryCast < TOut extends TIn , TIn = any > ( value : TIn | undefined , test : ( value : TIn ) => value is TOut ) : TOut | undefined ;
1871
- /** @internal */
1872
- export function tryCast < T > ( value : T , test : ( value : T ) => boolean ) : T | undefined ;
1873
- /** @internal */
1874
- export function tryCast < T > ( value : T , test : ( value : T ) => boolean ) : T | undefined {
1884
+ export function tryCast < TOut extends TIn , TIn = any > ( value : TIn | undefined , test : ( value : TIn ) => value is TOut ) : TOut | undefined {
1875
1885
return value !== undefined && test ( value ) ? value : undefined ;
1876
1886
}
1877
1887
0 commit comments