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
|
//// [asyncMethodWithSuper_es5.ts]
class A {
x() {
}
y() {
}
}
class B extends A {
// async method with only call/get on 'super' does not require a binding
async simple() {
// call with property access
super.x();
// call additional property.
super.y();
// call with element access
super["x"]();
// property access (read)
const a = super.x;
// element access (read)
const b = super["x"];
}
// async method with assignment/destructuring on 'super' requires a binding
async advanced() {
const f = () => {};
// call with property access
super.x();
// call with element access
super["x"]();
// property access (read)
const a = super.x;
// element access (read)
const b = super["x"];
// property access (assign)
super.x = f;
// element access (assign)
super["x"] = f;
// destructuring assign with property access
({ f: super.x } = { f });
// destructuring assign with element access
({ f: super["x"] } = { f });
}
}
//// [asyncMethodWithSuper_es5.js]
var A = /** @class */ (function () {
function A() {
}
A.prototype.x = function () {
};
A.prototype.y = function () {
};
return A;
}());
var B = /** @class */ (function (_super) {
__extends(B, _super);
function B() {
return _super !== null && _super.apply(this, arguments) || this;
}
// async method with only call/get on 'super' does not require a binding
B.prototype.simple = function () {
return __awaiter(this, void 0, void 0, function () {
var a, b;
return __generator(this, function (_a) {
// call with property access
_super.prototype.x.call(this);
// call additional property.
_super.prototype.y.call(this);
// call with element access
_super.prototype["x"].call(this);
a = _super.prototype.x;
b = _super.prototype["x"];
return [2 /*return*/];
});
});
};
// async method with assignment/destructuring on 'super' requires a binding
B.prototype.advanced = function () {
return __awaiter(this, void 0, void 0, function () {
var f, a, b;
return __generator(this, function (_a) {
f = function () { };
// call with property access
_super.prototype.x.call(this);
// call with element access
_super.prototype["x"].call(this);
a = _super.prototype.x;
b = _super.prototype["x"];
// property access (assign)
_super.prototype.x = f;
// element access (assign)
_super.prototype["x"] = f;
// destructuring assign with property access
(_super.prototype.x = { f: f }.f);
// destructuring assign with element access
(_super.prototype["x"] = { f: f }.f);
return [2 /*return*/];
});
});
};
return B;
}(A));
|