@@ -2,27 +2,27 @@ import {expectType} from 'tsd';
2
2
import type { Filter } from '../source/filter.d.ts' ;
3
3
4
4
// Basic loose filtering
5
- expectType < Filter < [ 1 , 2 , 3 , 3 , 4 ] , 3 , true > > ( [ 3 , 3 ] ) ;
5
+ expectType < Filter < [ 1 , 2 , 3 , 3 , 4 ] , 3 , { strict : true } > > ( [ 3 , 3 ] ) ;
6
6
expectType < Filter < [ 1 , '2' , 3 , 'foo' , false ] , number > > ( [ 1 , 3 ] ) ;
7
7
expectType < Filter < [ 1 , '2' , 3 , 'foo' , false ] , string > > ( [ '2' , 'foo' ] ) ;
8
8
expectType < Filter < [ 1 , '2' , 3 , 'foo' , false ] , string | number > > ( [ 1 , '2' , 3 , 'foo' ] ) ;
9
- expectType < Filter < [ 'foo' , 'baz' , 'foo' , 'foo' ] , 'foo' , true > > ( [ 'foo' , 'foo' , 'foo' ] ) ;
10
- expectType < Filter < [ 1 , '2' , 3 , 'foo' , false ] , string | number , true > > ( [ 1 , '2' , 3 , 'foo' ] ) ;
9
+ expectType < Filter < [ 'foo' , 'baz' , 'foo' , 'foo' ] , 'foo' , { strict : true } > > ( [ 'foo' , 'foo' , 'foo' ] ) ;
10
+ expectType < Filter < [ 1 , '2' , 3 , 'foo' , false ] , string | number , { strict : true } > > ( [ 1 , '2' , 3 , 'foo' ] ) ;
11
11
expectType < Filter < [ '1' , '2' , 3 , 4 , 'foo' ] , `${number } `> > ( [ '1' , '2' ] ) ;
12
12
expectType < Filter < [ true , false , true , 0 , 1 ] , boolean > > ( [ true , false , true ] ) ;
13
13
expectType < Filter < [ true , false , true , 0 , 1 ] , true > > ( [ true , true ] ) ;
14
14
15
15
// Filtering Boolean (keep truthy values)
16
16
expectType < Filter < [ true , false , boolean , 0 , 1 ] , Boolean > > ( [ true , 1 ] ) ;
17
- expectType < Filter < [ true , false , boolean , 0 , 1 ] , Boolean , true > > ( [ true , 1 ] ) ;
17
+ expectType < Filter < [ true , false , boolean , 0 , 1 ] , Boolean , { strict : true } > > ( [ true , 1 ] ) ;
18
18
expectType < Filter < [ 0 , '' , false , null , undefined , 'ok' , 42 ] , Boolean > > ( [ 'ok' , 42 ] ) ;
19
19
expectType < Filter < [ true , false , 0 , 1 , '' , 'text' , null , undefined ] , Boolean > > ( [ true , 1 , 'text' ] ) ;
20
20
21
21
// Filtering objects
22
22
type Object1 = { a : number } ;
23
23
type Object2 = { b : string } ;
24
24
expectType < Filter < [ Object1 , Object2 , Object1 & Object2 ] , Object1 > > ( { } as [ Object1 , Object1 & Object2 ] ) ;
25
- expectType < Filter < [ Object1 , Object2 , Object1 & Object2 ] , Object1 , true > > ( { } as [ Object1 , Object1 & Object2 ] ) ;
25
+ expectType < Filter < [ Object1 , Object2 , Object1 & Object2 ] , Object1 , { strict : true } > > ( { } as [ Object1 , Object1 & Object2 ] ) ;
26
26
27
27
// Loose filtering by boolean or number
28
28
expectType < Filter < [ true , 0 , 1 , false , 'no' ] , boolean | number > > ( [ true , 0 , 1 , false ] ) ;
@@ -64,16 +64,16 @@ class Foo {}
64
64
expectType < Filter < [ typeof Foo , { } , null , undefined ] , Boolean > > ( [ Foo , { } ] ) ;
65
65
66
66
// Filtering with strict = true and union including literals and primitives
67
- expectType < Filter < [ 1 , '1' , 2 , '2' , true , false ] , number | `${number } `, true > > ( [ 1 , '1' , 2 , '2' ] ) ;
67
+ expectType < Filter < [ 1 , '1' , 2 , '2' , true , false ] , number | `${number } `, { strict : true } > > ( [ 1 , '1' , 2 , '2' ] ) ;
68
68
69
69
// Filtering falsy values mixed with ({} | [] is truthy)
70
70
expectType < Filter < [ false , 0 , '' , null , undefined , { } , [ ] ] , Boolean > > ( [ { } , [ ] ] ) ;
71
71
72
72
// Filtering with `true` literal (strict) but array contains boolean and number
73
- expectType < Filter < [ true , false , 1 , 0 ] , true , true > > ( [ true ] ) ;
73
+ expectType < Filter < [ true , false , 1 , 0 ] , true , { strict : true } > > ( [ true ] ) ;
74
74
75
75
// Filtering empty string literal type with strict mode
76
- expectType < Filter < [ '' , 'non-empty' ] , '' , true > > ( [ '' ] ) ;
76
+ expectType < Filter < [ '' , 'non-empty' ] , '' , { strict : true } > > ( [ '' ] ) ;
77
77
78
78
// Filtering with loose mode for literal union type and matching subset
79
79
expectType < Filter < [ 1 , 2 , 3 , 4 , 5 ] , 2 | 3 > > ( [ 2 , 3 ] ) ;
@@ -112,4 +112,4 @@ expectType<Filter<[], number>>([]);
112
112
expectType < Filter < [ never , never ] , number > > ( [ ] ) ;
113
113
expectType < Filter < [ never , never ] , never > > ( [ ] ) ;
114
114
expectType < Filter < [ never , never ] , never > > ( [ ] ) ;
115
- expectType < Filter < [ never , never ] , never , true > > ( { } as [ never , never ] ) ;
115
+ expectType < Filter < [ never , never ] , never , { strict : true } > > ( { } as [ never , never ] ) ;
0 commit comments