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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
=== tests/cases/conformance/expressions/typeGuards/typeGuardFunctionGenerics.ts ===
class A {
>A : A
propA: number;
>propA : number
}
class B {
>B : B
propB: number;
>propB : number
}
class C extends A {
>C : C
>A : A
propC: number;
>propC : number
}
declare function isB(p1): p1 is B;
>isB : (p1: any) => p1 is B
>p1 : any
declare function isC(p1): p1 is C;
>isC : (p1: any) => p1 is C
>p1 : any
declare function retC(x): C;
>retC : (x: any) => C
>x : any
declare function funA<T>(p1: (p1) => T): T;
>funA : <T>(p1: (p1: any) => T) => T
>p1 : (p1: any) => T
>p1 : any
declare function funB<T>(p1: (p1) => T, p2: any): p2 is T;
>funB : <T>(p1: (p1: any) => T, p2: any) => p2 is T
>p1 : (p1: any) => T
>p1 : any
>p2 : any
declare function funC<T>(p1: (p1) => p1 is T): T;
>funC : <T>(p1: (p1: any) => p1 is T) => T
>p1 : (p1: any) => p1 is T
>p1 : any
declare function funD<T>(p1: (p1) => p1 is T, p2: any): p2 is T;
>funD : <T>(p1: (p1: any) => p1 is T, p2: any) => p2 is T
>p1 : (p1: any) => p1 is T
>p1 : any
>p2 : any
declare function funE<T, U>(p1: (p1) => p1 is T, p2: U): T;
>funE : <T, U>(p1: (p1: any) => p1 is T, p2: U) => T
>p1 : (p1: any) => p1 is T
>p1 : any
>p2 : U
let a: A;
>a : A
let test1: boolean = funA(isB);
>test1 : boolean
>funA(isB) : boolean
>funA : <T>(p1: (p1: any) => T) => T
>isB : (p1: any) => p1 is B
if (funB(retC, a)) {
>funB(retC, a) : boolean
>funB : <T>(p1: (p1: any) => T, p2: any) => p2 is T
>retC : (x: any) => C
>a : A
a.propC;
>a.propC : number
>a : C
>propC : number
}
let test2: B = funC(isB);
>test2 : B
>funC(isB) : B
>funC : <T>(p1: (p1: any) => p1 is T) => T
>isB : (p1: any) => p1 is B
if (funD(isC, a)) {
>funD(isC, a) : boolean
>funD : <T>(p1: (p1: any) => p1 is T, p2: any) => p2 is T
>isC : (p1: any) => p1 is C
>a : A
a.propC;
>a.propC : number
>a : C
>propC : number
}
let test3: B = funE(isB, 1);
>test3 : B
>funE(isB, 1) : B
>funE : <T, U>(p1: (p1: any) => p1 is T, p2: U) => T
>isB : (p1: any) => p1 is B
>1 : 1
|