O TypeScript usa a sintaxe getter / setter, semelhante ao ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Isso produzirá esse JavaScript, usando o Object.defineProperty()
recurso 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;
})();
Então, para usá-lo,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
No entanto, para usá-lo, verifique se o compilador TypeScript tem como alvo o ECMAScript5. Se você estiver executando o compilador de linha de comando, use --target
sinalizador como este;
tsc --target ES5
Se você estiver usando o Visual Studio, edite o arquivo do projeto para adicionar o sinalizador à configuração da ferramenta de construção TypeScriptCompile. Você pode ver isso aqui :
Como o @DanFromGermany sugere abaixo, se você está simplesmente lendo e escrevendo uma propriedade local como foo.bar = true
, ter um par de setter e getter é um exagero. Você sempre pode adicioná-los mais tarde se precisar fazer algo, como log, sempre que a propriedade for lida ou gravada.