TypeScript sử dụng cú pháp getter / setter giống như ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Điều đó sẽ tạo ra JavaScript này, sử dụng Object.defineProperty()
tính năng 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;
})();
Vì vậy, để sử dụng nó,
var myFoo = new foo();
if(myFoo.bar) { // calls the getter
myFoo.bar = false; // calls the setter and passes false
}
Tuy nhiên, để sử dụng nó, bạn phải đảm bảo trình biên dịch TypeScript nhắm mục tiêu ECMAScript5. Nếu bạn đang chạy trình biên dịch dòng lệnh, hãy sử dụng --target
cờ như thế này;
tsc --target ES5
Nếu bạn đang sử dụng Visual Studio, bạn phải chỉnh sửa tệp dự án của mình để thêm cờ vào cấu hình cho công cụ xây dựng TypeScriptCompile. Bạn có thể thấy điều đó ở đây :
Như @DanFromGermany gợi ý dưới đây, nếu bạn chỉ đơn giản là đọc và viết một thuộc tính cục bộ như thế foo.bar = true
, thì việc có một cặp setter và getter là quá mức cần thiết. Bạn luôn có thể thêm chúng sau nếu bạn cần làm gì đó, như đăng nhập, bất cứ khi nào tài sản được đọc hoặc viết.