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
|
=== tests/cases/conformance/classes/members/accessibility/protectedStaticClassPropertyAccessibleWithinSubclass.ts ===
class Base {
>Base : Base
protected static x: string;
>x : string
static staticMethod() {
>staticMethod : () => void
Base.x; // OK, accessed within their declaring class
>Base.x : string
>Base : typeof Base
>x : string
Derived1.x; // OK, accessed within their declaring class
>Derived1.x : string
>Derived1 : typeof Derived1
>x : string
Derived2.x; // OK, accessed within their declaring class
>Derived2.x : string
>Derived2 : typeof Derived2
>x : string
Derived3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
>Derived3.x : string
>Derived3 : typeof Derived3
>x : string
}
}
class Derived1 extends Base {
>Derived1 : Derived1
>Base : Base
static staticMethod1() {
>staticMethod1 : () => void
Base.x; // OK, accessed within a class derived from their declaring class
>Base.x : string
>Base : typeof Base
>x : string
Derived1.x; // OK, accessed within a class derived from their declaring class
>Derived1.x : string
>Derived1 : typeof Derived1
>x : string
Derived2.x; // OK, accessed within a class derived from their declaring class
>Derived2.x : string
>Derived2 : typeof Derived2
>x : string
Derived3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
>Derived3.x : string
>Derived3 : typeof Derived3
>x : string
}
}
class Derived2 extends Base {
>Derived2 : Derived2
>Base : Base
static staticMethod2() {
>staticMethod2 : () => void
Base.x; // OK, accessed within a class derived from their declaring class
>Base.x : string
>Base : typeof Base
>x : string
Derived1.x; // OK, accessed within a class derived from their declaring class
>Derived1.x : string
>Derived1 : typeof Derived1
>x : string
Derived2.x; // OK, accessed within a class derived from their declaring class
>Derived2.x : string
>Derived2 : typeof Derived2
>x : string
Derived3.x; // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
>Derived3.x : string
>Derived3 : typeof Derived3
>x : string
}
}
class Derived3 extends Derived1 {
>Derived3 : Derived3
>Derived1 : Derived1
protected static x: string;
>x : string
static staticMethod3() {
>staticMethod3 : () => void
Base.x; // OK, accessed within a class derived from their declaring class
>Base.x : string
>Base : typeof Base
>x : string
Derived1.x; // OK, accessed within a class derived from their declaring class
>Derived1.x : string
>Derived1 : typeof Derived1
>x : string
Derived2.x; // OK, accessed within a class derived from their declaring class
>Derived2.x : string
>Derived2 : typeof Derived2
>x : string
Derived3.x; // OK, accessed within their declaring class
>Derived3.x : string
>Derived3 : typeof Derived3
>x : string
}
}
Base.x; // Error, neither within their declaring class nor classes derived from their declaring class
>Base.x : string
>Base : typeof Base
>x : string
Derived1.x; // Error, neither within their declaring class nor classes derived from their declaring class
>Derived1.x : string
>Derived1 : typeof Derived1
>x : string
Derived2.x; // Error, neither within their declaring class nor classes derived from their declaring class
>Derived2.x : string
>Derived2 : typeof Derived2
>x : string
Derived3.x; // Error, neither within their declaring class nor classes derived from their declaring class
>Derived3.x : string
>Derived3 : typeof Derived3
>x : string
|