वैश्विक नामस्थान प्रदूषण से बचने के लिए।
यह एक क्लोजर पैटर्न है जहां आंतरिक कार्यों में उनके माता-पिता गुणों तक पहुंच होती है। आईआईएफई द्वारा, आंतरिक कार्यों के संदर्भ में लौटाया गया।
- वंशानुक्रम कार्यान्वयन: जहां यह Iife लिए एक तर्क के रूप
BaseClass
गुजरता नीचे दो स्थितियों में, जहां Iife पैटर्न काफी उपयोगी और कारण है, क्यों टाइपप्रति संकलक Iife पैटर्न उत्पन्न कर रहे हैं। यदि आईआईएफईई BaseClass
वैश्विक चर नहीं होगा, इस प्रकार वैश्विक नामस्थान प्रदूषित होगा।
टाइपप्रति:
class Greeter extends BaseController {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
जे एस:
var Greeter = (function(_super) {
__extends(Greeter, _super);
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function() {
return "Hello, " + this.greeting;
};
return Greeter;
}(BaseController));
- मॉड्यूल पैटर्न कार्यान्वयन: जहां ऐप की तरह केवल एक वैश्विक चर है ' ऐप 'और अन्य सभी फीचर्स
app.cart
, app.catalog
इत्यादि जैसी वस्तुओं में लिपटे हैं। मॉड्यूल के माध्यम से केवल वैरिएबल का खुलासा किया जाता है और अन्य सभी फीचर्स मॉड्यूल में ही जोड़े जाते हैं, जो केवल आईआईएफई द्वारा संभव है।
टाइपप्रति:
module App.Controller {
export class Greeter extends BaseController {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
}
जे एस:
var App;
(function (App) {
var Controller;
(function (Controller) {
var Greeter = (function (_super) {
__extends(Greeter, _super);
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function() {
return "Hello, " + this.greeting;
};
return Greeter;
}(BaseController));
Controller.Greeter = Greeter;
})(Controller = App.Controller || (App.Controller = {}));
})(App || (App = {}));
कॉपी/पेस्ट इस ब्राउज़र कंसोल और केवल अनुप्रयोग चर करने के लिए कोड जे एस विश्व स्तर पर बनाया जाएगा। बाकी कार्यक्षमता ऐप के तहत होगी।
धन्यवाद, mkdudeja
स्रोत
2016-03-25 09:29:21
शायद टाइपप्रति के कोड को आसान बनाने की तो यह है जब यह एक Iife की जरूरत है या नहीं, कि लाभ यह अनुमान लगाने का नहीं है। यह वास्तव में कोई फर्क नहीं पड़ता, है ना? यदि यह हाथ से लिखित कोड था, तो आपके पास –
एक बिंदु अधिक होगा जो इस प्रश्न को बंद करने के लिए मतदान करने वाले लोगों के लिए: यह राय आधारित नहीं है। टीएस कंपाइलर इस तरह से करता है, और सवाल यही है। मुझे लगता है कि इस निर्णय के पीछे कम से कम कुछ कारण है। – Tarion