यह एक बहुत ही काल्पनिक उदाहरण है, लेकिन मान लें कि हम एक चर बना सकते हैं _thisएक वर्ग समारोह में कहीं।
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
यह के रूप में की उम्मीद काम नहीं करेगा जब हम कहते हैं changeNameक्योंकि संकलित कोड की प्रासंगिकता का इस तरह दिखता है समारोह:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
यह बुरा जावास्क्रिप्ट है: हम दो हैं varएक दूसरे को अधिलेखित घोषणाओं। _thisसंकलक द्वारा बनाई गई मेरी द्वारा ओवरराइट किया जा रहा है _this।
जहां तक मैं देख सकता हूँ, इस व्यवहार टाइपप्रति कल्पना में निर्दिष्ट नहीं है।
वे क्यों विरोध करना चाहिए? संकलक का पता नहीं लगा सकते हैं कि मैं नाम के एक चर पैदा की है _thisऔर एक कुछ स्वचालित रूप से उत्पन्न किसी और नाम की तरह _this2एक-दूसरे को कुचल रही से मेरी चर और संकलक उत्पन्न रखने के लिए?













