File: typeOfThisInStaticMembers.types

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (107 lines) | stat: -rw-r--r-- 1,727 bytes parent folder | download | duplicates (4)
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
>'' : ""