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/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers.ts ===
class C {
>C : C
constructor(x: number) { }
>x : number
static foo: number;
>foo : number
static bar() {
>bar : () => typeof C
// type of this is the constructor function type
var t = this;
>t : typeof C
>this : typeof C
return this;
>this : typeof C
}
}
var t = C.bar();
>t : typeof C
>C.bar() : typeof C
>C.bar : () => typeof C
>C : typeof C
>bar : () => typeof C
// all ok
var r2 = t.foo + 1;
>r2 : number
>t.foo + 1 : number
>t.foo : number
>t : typeof C
>foo : number
>1 : 1
var r3 = t.bar();
>r3 : typeof C
>t.bar() : typeof C
>t.bar : () => typeof C
>t : typeof C
>bar : () => typeof C
var r4 = new t(1);
>r4 : C
>new t(1) : C
>t : typeof C
>1 : 1
class C2<T> {
>C2 : C2<T>
static test: number;
>test : number
constructor(x: string) { }
>x : string
static foo: string;
>foo : string
static bar() {
>bar : () => typeof C2
// type of this is the constructor function type
var t = this;
>t : typeof C2
>this : typeof C2
return this;
>this : typeof C2
}
}
var t2 = C2.bar();
>t2 : typeof C2
>C2.bar() : typeof C2
>C2.bar : () => typeof C2
>C2 : typeof C2
>bar : () => typeof C2
// all ok
var r5 = t2.foo + 1;
>r5 : string
>t2.foo + 1 : string
>t2.foo : string
>t2 : typeof C2
>foo : string
>1 : 1
var r6 = t2.bar();
>r6 : typeof C2
>t2.bar() : typeof C2
>t2.bar : () => typeof C2
>t2 : typeof C2
>bar : () => typeof C2
var r7 = new t2('');
>r7 : C2<unknown>
>new t2('') : C2<unknown>
>t2 : typeof C2
>'' : ""
|