Typescript gebruikt getter / setter syntax dat is als ActionScript3.
class foo {
private _bar:boolean = false;
get bar():boolean {
return this._bar;
}
set bar(theBar:boolean) {
this._bar = theBar;
}
}
Dat zal dit Javascript produceren, met behulp van de functie ECMAScript 5 Object.defineProperty ().
var foo = (function () {
function foo() {
this._bar = false;
}
Object.defineProperty(foo.prototype, "bar", {
get: function () {
return this._bar;
},
set: function (theBar) {
this._bar = theBar;
},
enumerable: true,
configurable: true
});
return foo;
})();
Dus om het te gebruiken,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Echter, om het te gebruiken op alle, moet u ervoor zorgen dat de typoscript compiler targets ECMAScript5. Als u werkt met de command line compiler, gebruik --target vlag als volgt;
TSC --target ES5
Als u gebruik maakt van Visual Studio, moet u uw project bestand bewerken om de vlag toe te voegen aan de configuratie voor de TypeScriptCompile build tool. Je kunt zien dat hier :
Zoals @DanFromGermany hieronder al doet vermoeden, als je gewoon lezen en schrijven van een lokale eigenschap zoals foo.bar = true, dan is het hebben van een setter en getter paar is overkill. U kunt altijd toevoegen ze later als je nodig hebt om iets te doen, zoals houtkap, wanneer de woning wordt gelezen of geschreven.