TypeScript utilise une syntaxe getter / setter semblable à ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Cela produira ce JavaScript, en utilisant la fonction 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;
})();
Donc, pour l'utiliser,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Cependant, pour pouvoir l'utiliser, vous devez vous assurer que le compilateur TypeScript cible ECMAScript5. Si vous exécutez le compilateur de ligne de commande, utilisez un --target
indicateur comme celui-ci;
tsc --target ES5
Si vous utilisez Visual Studio, vous devez modifier votre fichier de projet pour ajouter l'indicateur à la configuration de l'outil de génération TypeScriptCompile. Vous pouvez le voir ici :
Comme @DanFromGermany le suggère ci-dessous, si vous lisez et écrivez simplement une propriété locale comme foo.bar = true
, alors avoir une paire setter et getter est exagéré. Vous pouvez toujours les ajouter ultérieurement si vous avez besoin de faire quelque chose, comme la journalisation, chaque fois que la propriété est lue ou écrite.