TypeScript utiliza la sintaxis getter / setter que es como ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Eso producirá este JavaScript, utilizando la función 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;
})();
Para usarlo,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Sin embargo, para poder usarlo, debe asegurarse de que el compilador TypeScript esté dirigido a ECMAScript5. Si está ejecutando el compilador de línea de comando, use el --target
indicador como este;
tsc --target ES5
Si está utilizando Visual Studio, debe editar su archivo de proyecto para agregar el indicador a la configuración de la herramienta de compilación TypeScriptCompile. Puedes ver eso aquí :
Como @DanFromGermany sugiere a continuación, si simplemente está leyendo y escribiendo una propiedad local como foo.bar = true
, tener un setter y getter pair es excesivo. Siempre puede agregarlos más adelante si necesita hacer algo, como iniciar sesión, cada vez que la propiedad se lee o se escribe.