TypeScript utilizza una sintassi getter / setter simile ad ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Questo produrrà questo JavaScript, usando la Object.defineProperty()
funzione ECMAScript 5 .
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;
})();
Quindi per usarlo,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Tuttavia, per poterlo utilizzare, è necessario assicurarsi che il compilatore TypeScript abbia come destinazione ECMAScript5. Se stai eseguendo il compilatore della riga di comando, usa --target
flag in questo modo;
tsc --target ES5
Se si utilizza Visual Studio, è necessario modificare il file di progetto per aggiungere il flag alla configurazione per lo strumento di compilazione TypeScriptCompile. Puoi vederlo qui :
Come suggerisce @DanFromGermany di seguito, se stai semplicemente leggendo e scrivendo una proprietà locale come foo.bar = true
, avere una coppia setter e getter è eccessivo. Puoi sempre aggiungerli in un secondo momento se devi fare qualcosa, come la registrazione, ogni volta che la proprietà viene letta o scritta.