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
|
//// [thisTypeInAccessors.ts]
interface Foo {
n: number;
x: number;
}
const explicit = {
n: 12,
get x(this: Foo): number { return this.n; },
set x(this: Foo, n: number) { this.n = n; }
}
const copiedFromGetter = {
n: 14,
get x(this: Foo): number { return this.n; },
set x(n) { this.n = n; }
}
const copiedFromSetter = {
n: 15,
get x() { return this.n },
set x(this: Foo, n: number) { this.n = n; }
}
const copiedFromGetterUnannotated = {
n: 16,
get x(this: Foo) { return this.n },
set x(this, n) { this.n = n; }
}
class Explicit {
n = 17;
get x(this: Foo): number { return this.n; }
set x(this: Foo, n: number) { this.n = n; }
}
class Contextual {
n = 21;
get x() { return this.n } // inside a class, so already correct
}
//// [thisTypeInAccessors.js]
var explicit = {
n: 12,
get x() { return this.n; },
set x(n) { this.n = n; }
};
var copiedFromGetter = {
n: 14,
get x() { return this.n; },
set x(n) { this.n = n; }
};
var copiedFromSetter = {
n: 15,
get x() { return this.n; },
set x(n) { this.n = n; }
};
var copiedFromGetterUnannotated = {
n: 16,
get x() { return this.n; },
set x(n) { this.n = n; }
};
var Explicit = /** @class */ (function () {
function Explicit() {
this.n = 17;
}
Object.defineProperty(Explicit.prototype, "x", {
get: function () { return this.n; },
set: function (n) { this.n = n; },
enumerable: true,
configurable: true
});
return Explicit;
}());
var Contextual = /** @class */ (function () {
function Contextual() {
this.n = 21;
}
Object.defineProperty(Contextual.prototype, "x", {
get: function () { return this.n; } // inside a class, so already correct
,
enumerable: true,
configurable: true
});
return Contextual;
}());
|