/
arrayFilter.types
33 lines (27 loc) · 1.3 KB
/
arrayFilter.types
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
=== tests/cases/compiler/arrayFilter.ts ===
var foo = [
>foo : { name: string; }[]
>[ { name: 'bar' }, { name: null }, { name: 'baz' }] : { name: string; }[]
{ name: 'bar' },
>{ name: 'bar' } : { name: string; }
>name : string
>'bar' : "bar"
{ name: null },
>{ name: null } : { name: null; }
>name : null
>null : null
{ name: 'baz' }
>{ name: 'baz' } : { name: string; }
>name : string
>'baz' : "baz"
]
foo.filter(x => x.name); //should accepted all possible types not only boolean!
>foo.filter(x => x.name) : { name: string; }[]
>foo.filter : { <S extends { name: string; }>(callbackfn: (value: { name: string; }, index: number, array: { name: string; }[]) => value is S, thisArg?: any): S[]; (callbackfn: (value: { name: string; }, index: number, array: { name: string; }[]) => unknown, thisArg?: any): { name: string; }[]; }
>foo : { name: string; }[]
>filter : { <S extends { name: string; }>(callbackfn: (value: { name: string; }, index: number, array: { name: string; }[]) => value is S, thisArg?: any): S[]; (callbackfn: (value: { name: string; }, index: number, array: { name: string; }[]) => unknown, thisArg?: any): { name: string; }[]; }
>x => x.name : (x: { name: string; }) => string
>x : { name: string; }
>x.name : string
>x : { name: string; }
>name : string