टाइपस्क्रिप्ट, एक्शनस्क्रिप्ट 3 की तरह गेटटर / सेटर सिंटैक्स का उपयोग करता है।
class foo {
private _bar: boolean = false;
get bar(): boolean {
return this._bar;
}
set bar(value: boolean) {
this._bar = value;
}
}
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
}
हालाँकि, इसका उपयोग करने के लिए, आपको यह सुनिश्चित करना होगा कि टाइपस्क्रिप्ट कंपाइलर ECMAScript5 को लक्षित करे। यदि आप कमांड लाइन संकलक चला रहे हैं, तो --target
इस तरह ध्वज का उपयोग करें;
tsc --target ES5
यदि आप Visual Studio का उपयोग कर रहे हैं, तो आपको TypeScriptCompile बिल्ड टूल के लिए फ़्लैग को कॉन्फ़िगरेशन में जोड़ने के लिए अपनी प्रोजेक्ट फ़ाइल को संपादित करना होगा। आप यहाँ देख सकते हैं कि :
जैसा कि @DanFromGermany नीचे सुझाता है, अगर आपका बस एक स्थानीय संपत्ति को पढ़ना और लिखना है foo.bar = true
, तो एक सेटर और गेट्टर जोड़ी का ओवरकिल होना। आप हमेशा उन्हें बाद में जोड़ सकते हैं यदि आपको कुछ करने की ज़रूरत है, जैसे लॉगिंग, जब भी संपत्ति पढ़ी या लिखी जाती है।