TypeScriptは、ActionScript3のようなゲッター/セッター構文を使用します。
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
ECMAScript 5 Object.defineProperty()
機能を使用して、このJavaScriptが生成されます。
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;
})();
それを使用するには、
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
ただし、それを使用するには、TypeScriptコンパイラがECMAScript5をターゲットにしていることを確認する必要があります。コマンドラインコンパイラを実行している場合は、次の--target
ようなフラグを使用します。
tsc --target ES5
Visual Studioを使用している場合は、プロジェクトファイルを編集して、TypeScriptCompileビルドツールの構成にフラグを追加する必要があります。あなたはそれをここで見ることができます:
@DanFromGermanyが以下に示すように、単純にのようなローカルプロパティを読み書きしているfoo.bar = true
場合は、セッターとゲッターのペアを持つのはやりすぎです。プロパティの読み取りまたは書き込みが行われるたびに、ロギングなどの必要な場合は、いつでも追加できます。