मैं टाइपस्क्रिप्ट का उपयोग करने के लिए एक कोणीय ऐप को परिवर्तित कर रहा हूं, लेकिन यह एक सामान्य टाइपस्क्रिप्ट प्रश्न है, कोणीय के बारे में नहीं। कोणीय जे एस फ़ाइलें पंक्तियों के साथ कर रहे हैं:टाइपस्क्रिप्ट - उसे यह होना चाहिए? (जहां यह == वैश्विक दायरा)
(function() {
var app = angular.module('myModule', []);
app.controller('myController', ['$scope',
function ($scope) {
$scope.myNewProperty = "Bob";
}
]);
})();
और मैं परिवर्तित कर दिया है कि सुंदर टाइपप्रति वर्ग वाक्यविन्यास के लिए:
class myController {
constructor($scope) {
$scope.myNewProperty = "Bob";
}
}
angular.module('myModule', []).controller("myController", myController);
सभी, ठीक काम करता है उत्पन्न जे एस को छोड़कर जे एस के अनुसार लिपटे नहीं है मॉड्यूल पैटर्न (यानी बाहरी अज्ञात फ़ंक्शन में):
var myController = (function() {
app.controller('myController', ['$scope',
function ($scope) {
$scope.myNewProperty = "Bob";
}
]);
})();
var app = angular.module('myModule', []);
तो मेरा नियंत्रक अब वैश्विक है। अगर मैं एक टाइपप्रति मॉड्यूल में वर्ग शब्दों में कहें, तो js एक वैश्विक चर के रूप में मॉड्यूल का नाम के साथ उत्पन्न करता है:
var TsModule;
(function (TsModule) {
var myController = (function() {
app.controller('myController', ['$scope',
function ($scope) {
$scope.myNewProperty = "Bob";
}
]);
})();
var app = angular.module('myModule', []);
})(TsModule || (TsModule = {}));
मैं टाइपप्रति इस तरह से वैश्विक क्षेत्र प्रदूषण को कैसे रोकूं? मैं सिर्फ यह सब एक अच्छा स्थानीय दायरे में लपेटा चाहता हूँ। मैंने इसे कहीं और कहा है "बस पुराने जेएस सिंटैक्स पर वापस जाएं" (यानी कोई टाइपस्क्रिप्ट क्लास नहीं)। How can I define an AngularJS service using a TypeScript class that doesn't pollute the global scope?
लेकिन टाइपस्क्रिप्ट/है/कक्षा वाक्यविन्यास का उपयोग करके हम का पूरा बिंदु। टाइपस्क्रिप्ट किसी भी (समझदार) जेएस प्रोग्रामर के साथ बाधाओं पर है जो वैश्विक नहीं जाना जानता है?
थोड़ी देर के बाद से मैंने टाइपस्क्रिप्ट का उपयोग किया था, इसलिए मैं इस पर बंद हो सकता हूं, लेकिन क्या आपने उपरोक्त टाइपस्क्रिप्ट कोड को तुरंत लागू किए गए लैम्ब्डा फ़ंक्शन में लपेटने की कोशिश की है? '((=)> { // कोड यहाँ ... })();' –
मैं हताशा मिलता है, लेकिन अपने सभी फ़ाइलों के लिए एकमात्र, अच्छी तरह से परिभाषित मॉड्यूल नाम का उपयोग शायद ही वैश्विक क्षेत्र को प्रदूषित कर रहा है। यह वैश्विक दायरे पर एक एकल चर बना देगा, और फिर भी, यदि आप अपनी कक्षाओं का निर्यात नहीं कर रहे हैं, तो यह कभी खाली वस्तु से अधिक नहीं होगा। यह एक बहुत मामूली मुद्दा है। – Josh
बस एफवाईआई (आप पहले से ही जानते हैं) कक्षा अभिव्यक्तियां अगले टीएस में आ रही हैं जो उन्हें आईआईएफई में अनुमति देगी। इसके अलावा ओपी के लिए टाइपस्क्रिप्ट में मॉड्यूल पैटर्न पर इस वीडियो (मैंने बनाया) आपके लिए उपयोगी हो सकता है: https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1 – basarat