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
, то мати пара сеттера та геттера є непосильним. Ви завжди можете їх додати пізніше, якщо вам потрібно зробити щось, наприклад журнал, щоразу, коли властивість буде прочитана чи записана.