File: classConstructorAccessibility2.js

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 (171 lines) | stat: -rw-r--r-- 5,243 bytes parent folder | download
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
//// [classConstructorAccessibility2.ts]
class BaseA {
    public constructor(public x: number) { }
    createInstance() { new BaseA(1); }
}

class BaseB {
    protected constructor(public x: number) { }
    createInstance() { new BaseB(2); }
}

class BaseC {
    private constructor(public x: number) { }
    createInstance() { new BaseC(3); }
    static staticInstance() { new BaseC(4); }
}

class DerivedA extends BaseA {
    constructor(public x: number) { super(x); }
    createInstance() { new DerivedA(5); }
    createBaseInstance() { new BaseA(6); }
    static staticBaseInstance() { new BaseA(7); }
}

class DerivedB extends BaseB {
    constructor(public x: number) { super(x); }
    createInstance() { new DerivedB(7); }
    createBaseInstance() { new BaseB(8); } // ok
    static staticBaseInstance() { new BaseB(9); } // ok
}

class DerivedC extends BaseC { // error
    constructor(public x: number) { super(x); }
    createInstance() { new DerivedC(9); }
    createBaseInstance() { new BaseC(10); } // error
    static staticBaseInstance() { new BaseC(11); } // error
}

var ba = new BaseA(1);
var bb = new BaseB(1); // error
var bc = new BaseC(1); // error

var da = new DerivedA(1);
var db = new DerivedB(1);
var dc = new DerivedC(1);


//// [classConstructorAccessibility2.js]
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var BaseA = /** @class */ (function () {
    function BaseA(x) {
        this.x = x;
    }
    BaseA.prototype.createInstance = function () { new BaseA(1); };
    return BaseA;
}());
var BaseB = /** @class */ (function () {
    function BaseB(x) {
        this.x = x;
    }
    BaseB.prototype.createInstance = function () { new BaseB(2); };
    return BaseB;
}());
var BaseC = /** @class */ (function () {
    function BaseC(x) {
        this.x = x;
    }
    BaseC.prototype.createInstance = function () { new BaseC(3); };
    BaseC.staticInstance = function () { new BaseC(4); };
    return BaseC;
}());
var DerivedA = /** @class */ (function (_super) {
    __extends(DerivedA, _super);
    function DerivedA(x) {
        var _this = _super.call(this, x) || this;
        _this.x = x;
        return _this;
    }
    DerivedA.prototype.createInstance = function () { new DerivedA(5); };
    DerivedA.prototype.createBaseInstance = function () { new BaseA(6); };
    DerivedA.staticBaseInstance = function () { new BaseA(7); };
    return DerivedA;
}(BaseA));
var DerivedB = /** @class */ (function (_super) {
    __extends(DerivedB, _super);
    function DerivedB(x) {
        var _this = _super.call(this, x) || this;
        _this.x = x;
        return _this;
    }
    DerivedB.prototype.createInstance = function () { new DerivedB(7); };
    DerivedB.prototype.createBaseInstance = function () { new BaseB(8); }; // ok
    DerivedB.staticBaseInstance = function () { new BaseB(9); }; // ok
    return DerivedB;
}(BaseB));
var DerivedC = /** @class */ (function (_super) {
    __extends(DerivedC, _super);
    function DerivedC(x) {
        var _this = _super.call(this, x) || this;
        _this.x = x;
        return _this;
    }
    DerivedC.prototype.createInstance = function () { new DerivedC(9); };
    DerivedC.prototype.createBaseInstance = function () { new BaseC(10); }; // error
    DerivedC.staticBaseInstance = function () { new BaseC(11); }; // error
    return DerivedC;
}(BaseC));
var ba = new BaseA(1);
var bb = new BaseB(1); // error
var bc = new BaseC(1); // error
var da = new DerivedA(1);
var db = new DerivedB(1);
var dc = new DerivedC(1);


//// [classConstructorAccessibility2.d.ts]
declare class BaseA {
    x: number;
    constructor(x: number);
    createInstance(): void;
}
declare class BaseB {
    x: number;
    protected constructor(x: number);
    createInstance(): void;
}
declare class BaseC {
    x: number;
    private constructor();
    createInstance(): void;
    static staticInstance(): void;
}
declare class DerivedA extends BaseA {
    x: number;
    constructor(x: number);
    createInstance(): void;
    createBaseInstance(): void;
    static staticBaseInstance(): void;
}
declare class DerivedB extends BaseB {
    x: number;
    constructor(x: number);
    createInstance(): void;
    createBaseInstance(): void;
    static staticBaseInstance(): void;
}
declare class DerivedC extends BaseC {
    x: number;
    constructor(x: number);
    createInstance(): void;
    createBaseInstance(): void;
    static staticBaseInstance(): void;
}
declare var ba: BaseA;
declare var bb: any;
declare var bc: any;
declare var da: DerivedA;
declare var db: DerivedB;
declare var dc: DerivedC;