TypeScript ใช้ไวยากรณ์ getter / setter ที่เหมือนกับ ActionScript3
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
ที่จะผลิต JavaScript นี้ใช้ 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;
})();
ดังนั้นที่จะใช้มัน
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
นั้นแล้วการมีคู่เซทเทอร์และทะเยอทะยานก็เกินความจริง คุณสามารถเพิ่มพวกเขาได้ในภายหลังหากคุณต้องการทำบางสิ่งเช่นการบันทึกเมื่อใดก็ตามที่คุณสมบัติถูกอ่านหรือเขียน