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 34 35 36 37 38
|
=== tests/cases/compiler/typeGuardNarrowsIndexedAccessOfKnownProperty3.ts ===
type Foo = (number | undefined)[] | undefined;
>Foo : (number | undefined)[] | undefined
const foo: Foo = [1, 2, 3];
>foo : Foo
>[1, 2, 3] : number[]
>1 : 1
>2 : 2
>3 : 3
const index = 1;
>index : 1
>1 : 1
if (foo !== undefined && foo[index] !== undefined && foo[index] >= 0) {
>foo !== undefined && foo[index] !== undefined && foo[index] >= 0 : boolean
>foo !== undefined && foo[index] !== undefined : boolean
>foo !== undefined : boolean
>foo : (number | undefined)[]
>undefined : undefined
>foo[index] !== undefined : boolean
>foo[index] : number | undefined
>foo : (number | undefined)[]
>index : 1
>undefined : undefined
>foo[index] >= 0 : boolean
>foo[index] : number
>foo : (number | undefined)[]
>index : 1
>0 : 0
foo[index] // number
>foo[index] : number
>foo : (number | undefined)[]
>index : 1
}
|