TypeScript verwendet eine Getter / Setter-Syntax, die ActionScript3 ähnelt.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Dadurch wird dieses JavaScript mithilfe der ECMAScript 5- Object.defineProperty()
Funktion erstellt.
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;
})();
Also, um es zu benutzen,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Um es überhaupt verwenden zu können, müssen Sie jedoch sicherstellen, dass der TypeScript-Compiler auf ECMAScript5 abzielt. Wenn Sie den Befehlszeilen-Compiler ausführen, verwenden Sie das folgende --target
Flag.
tsc --target ES5
Wenn Sie Visual Studio verwenden, müssen Sie Ihre Projektdatei bearbeiten, um der Konfiguration für das TypeScriptCompile-Build-Tool das Flag hinzuzufügen. Das können Sie hier sehen :
Wie @DanFromGermany unten vorschlägt, foo.bar = true
ist es übertrieben, ein Setter-Getter-Paar zu haben , wenn Sie einfach eine lokale Eigenschaft wie lesen und schreiben . Sie können sie später jederzeit hinzufügen, wenn Sie etwas tun müssen, z. B. Protokollierung, wenn die Eigenschaft gelesen oder geschrieben wird.