File: emitClassExpressionInDeclarationFile2.types

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (79 lines) | stat: -rw-r--r-- 2,073 bytes parent folder | download | duplicates (5)
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
=== tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts ===
export var noPrivates = class {
>noPrivates : typeof noPrivates
>class {    static getTags() { }    tags() { }    private static ps = -1    private p = 12} : typeof noPrivates

    static getTags() { }
>getTags : () => void

    tags() { }
>tags : () => void

    private static ps = -1
>ps : number
>-1 : -1
>1 : 1

    private p = 12
>p : number
>12 : 12
}

// altered repro from #15066 to add private property
export class FooItem {
>FooItem : FooItem

    foo(): void { }
>foo : () => void

    name?: string;
>name : string

    private property = "capitalism"
>property : string
>"capitalism" : "capitalism"
}

export type Constructor<T> = new(...args: any[]) => T;
>Constructor : Constructor<T>
>args : any[]

export function WithTags<T extends Constructor<FooItem>>(Base: T) {
>WithTags : <T extends Constructor<FooItem>>(Base: T) => { new (...args: any[]): (Anonymous class); prototype: WithTags<any>.(Anonymous class); getTags(): void; } & T
>Base : T

    return class extends Base {
>class extends Base {        static getTags(): void { }        tags(): void { }    } : { new (...args: any[]): (Anonymous class); prototype: WithTags<any>.(Anonymous class); getTags(): void; } & T
>Base : FooItem

        static getTags(): void { }
>getTags : () => void

        tags(): void { }
>tags : () => void
    }
}

export class Test extends WithTags(FooItem) {}
>Test : Test
>WithTags(FooItem) : WithTags<typeof FooItem>.(Anonymous class) & FooItem
>WithTags : <T extends Constructor<FooItem>>(Base: T) => { new (...args: any[]): (Anonymous class); prototype: WithTags<any>.(Anonymous class); getTags(): void; } & T
>FooItem : typeof FooItem

const test = new Test();
>test : Test
>new Test() : Test
>Test : typeof Test

Test.getTags()
>Test.getTags() : void
>Test.getTags : () => void
>Test : typeof Test
>getTags : () => void

test.tags();
>test.tags() : void
>test.tags : () => void
>test : Test
>tags : () => void