TypeScript использует синтаксис getter / setter, который похож на ActionScript3.
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
Это создаст этот JavaScript, используя Object.defineProperty()
функцию 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;
})();
Таким образом, чтобы использовать его,
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
, наличие пары сеттеров и геттеров является излишним. Вы всегда можете добавить их позже, если вам нужно что-то сделать, например, войти в систему, когда свойство будет прочитано или записано.