TypeScript używa składni getter / setter, która jest podobna do ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Spowoduje to wygenerowanie tego kodu JavaScript przy użyciu funkcji ECMAScript 5 Object.defineProperty()
.
var foo = (function () {
function foo() {
this._bar = false;
}
Object.defineProperty(foo.prototype, "bar", {
get: function () {
return this._bar;
},
set: function (value) {
this._bar = value;
},
enumerable: true,
configurable: true
});
return foo;
})();
Aby go użyć,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Aby jednak w ogóle z niego korzystać, należy się upewnić, że kompilator TypeScript jest ukierunkowany na ECMAScript5. Jeśli korzystasz z kompilatora wiersza poleceń, użyj --target
flagi w ten sposób;
tsc --target ES5
Jeśli używasz programu Visual Studio, musisz edytować plik projektu, aby dodać flagę do konfiguracji dla narzędzia do budowania TypeScriptCompile. Możesz to zobaczyć tutaj :
Jak @DanFromGermany sugeruje poniżej, jeśli po prostu czytasz i piszesz lokalną właściwość foo.bar = true
, to posiadanie pary setera i gettera to przesada. Zawsze możesz je dodać później, jeśli chcesz coś zrobić, na przykład zalogować się, za każdym razem, gdy właściwość jest czytana lub zapisywana.