Node.js द्वारा टाइपस्क्रिप्ट लागू नहीं करने के कारणों पर एक संक्षिप्त लेख।
इसके बाद टाइपस्क्रिप्ट के संबंध में Node.js में क्या किया गया है और क्या नहीं किया गया है।
इस लेख का उद्देश्य Node.js टीम या टाइपस्क्रिप्ट टीम की आलोचना करना नहीं है।
वास्तव में, यह बिल्कुल विपरीत है।
मुझे गंभीरता से लगता है कि Node.js टीम ने टाइपस्क्रिप्ट को उसी तरह से "कार्यान्वयन" करने में सर्वोत्तम संभव विकल्प चुना है जैसा उन्होंने किया था।
मैं यहां जिस बात पर वास्तव में जोर दे रहा हूं वह यह है कि Node.js ने टाइपस्क्रिप्ट लागू नहीं किया है। उन्होंने बस इसके लिए कुछ प्रकार का समर्थन जोड़ा है। यह एक महत्वपूर्ण अंतर है जो मुझे लगता है कि Node.js और टाइपस्क्रिप्ट के बारे में चर्चा में अक्सर अनदेखा कर दिया जाता है।
पिछले कुछ हफ़्तों में, मैंने न्यूज़लेटर्स में उद्धृत 50 से अधिक लेखों की गिनती की, जिनमें उल्लेख किया गया था कि Node.js ने टाइपस्क्रिप्ट लागू किया है।
मुझे लगता है कि इस बिंदु को हमेशा के लिए स्पष्ट करने का समय आ गया है।
स्पॉयलर अलर्ट: Node.js ने टाइपस्क्रिप्ट लागू नहीं किया।
2010 में, माइक्रोसॉफ्ट ने टाइपस्क्रिप्ट जारी किया, जो जावास्क्रिप्ट का एक सुपरसेट है जो भाषा में स्थिर टाइपिंग जोड़ता है। टाइपस्क्रिप्ट को जावास्क्रिप्ट की कुछ कमियों को दूर करने के लिए डिज़ाइन किया गया था, जैसे कि प्रकार की सुरक्षा की कमी और बड़े कोडबेस को बनाए रखने की कठिनाई। अपनी रिलीज़ के बाद से, टाइपस्क्रिप्ट ने डेवलपर्स के बीच लोकप्रियता हासिल की है, कई परियोजनाओं ने इसे अपनी प्राथमिक भाषा के रूप में अपनाया है।
जेएस सर्वेक्षण की नवीनतम स्थिति के अनुसार टाइपस्क्रिप्ट व्यावहारिक रूप से हर जगह है। 78% डेवलपर अपने विकास समय के कम से कम 50% के लिए टाइपस्क्रिप्ट का उपयोग करते हैं, इसलिए कोई आश्चर्य नहीं कि "Node.js कार्यान्वित टाइपस्क्रिप्ट" की गूंज वेब के सबसे गहन कोनों तक भी पहुंच गई।
लेकिन, स्पष्ट रूप से कहें तो, ऐसा नहीं हुआ। और शायद ऐसा कभी नहीं होगा।
Node.js द्वारा टाइपस्क्रिप्ट लागू नहीं करने के कई कारण हैं। मेरे विचार से ये दो सबसे महत्वपूर्ण बातें हैं:
क्या आप जानते हैं कि enum रनटाइम पर क्या बन जाता है? एक वस्तु.
और यह - सौभाग्य से - कुछ उदाहरणों में से एक है कि टाइपस्क्रिप्ट रनटाइम पर चीजों को कैसे इंजेक्ट करता है। यह Node.js के लिए एक समस्या है क्योंकि इसका मतलब यह होगा कि रनटाइम को टाइपस्क्रिप्ट की विशेषताओं के बारे में पता होना होगा, जो बहुत अधिक जटिलता और ओवरहेड पेश करेगा।
यदि Node.js ECMAScript के साथ अपनी स्थिरता बनाए रखना चाहता है और अपने शेष अस्तित्व के लिए निर्भरता प्रबंधन से निपटना नहीं चाहता है, तो यह टाइपस्क्रिप्ट को वर्तमान स्वरूप में एक निर्भरता के रूप में स्वीकार नहीं कर सकता है।
टाइपस्क्रिप्ट सिमेंटिक वर्जनिंग (सेम्वर) का पालन नहीं करता है।
दूसरी ओर, Node.js, सेम्वर का सख्ती से पालन करता है और इसकी तीन अलग-अलग रिलीज़ लाइनें हैं (वर्तमान में, हमारे पास 18.x, 20.x, 22.x हैं)। इसका मतलब यह है कि मामूली या पैच रिलीज़ में ब्रेकिंग परिवर्तन पेश किए जा सकते हैं, जो मौजूदा कोड के साथ संगतता समस्याएं पैदा कर सकता है।
इसके अलावा, समर्थित प्लेटफार्मों की संख्या बहुत बड़ी है, इसलिए हर चीज को नियंत्रण में रखना आसान नहीं है।
Node.js टाइपस्क्रिप्ट को एक निर्भरता के रूप में स्वीकार नहीं कर सकता क्योंकि यह लगातार टूट जाएगा। यह एक मूलभूत मुद्दा है जो Node.js को टाइपस्क्रिप्ट लागू करने से रोकता है।
यही वह जगह है जहां भ्रम पैदा होता है। Node.js ने टाइपस्क्रिप्ट को लागू नहीं किया, लेकिन उन्होंने प्रायोगिक ध्वज के तहत टाइप स्ट्रिपिंग को जोड़ा। यह सुविधा डेवलपर्स को टाइपस्क्रिप्ट कोड लिखने और इसे प्रकार की जानकारी के बिना जावास्क्रिप्ट में संकलित करने की अनुमति देती है। यह एक समझौता है जो डेवलपर्स को ऊपर उल्लिखित मुद्दों को पेश किए बिना Node.js में टाइपस्क्रिप्ट का उपयोग करने की अनुमति देता है।
क्या आप एक उदाहरण चाहते हैं? हेयर यू गो:
function sum(a: number, b: number): number { return a b; }
यह फ़ंक्शन, जब --प्रयोगात्मक-स्ट्रिप-प्रकार ध्वज के साथ संकलित किया जाता है, बन जाएगा:
function sum(a , b ) { return a b; }
क्या तुमने देखा? प्रकार ख़त्म हो गए हैं और उनकी जगह रिक्त स्थान ने ले ली है। लेकिन, क्यों?, आप पूछ सकते हैं। ठीक है, क्योंकि ऐसा करने से उनके लिए अलग निर्माण प्रक्रिया की परेशानी के बिना सोर्समैप संदर्भ सुरक्षित रहते हैं।
आंतरिक रूप से, यह अमारो नामक पैकेज के माध्यम से किया जाता है जो एससीसी को लपेटता है - एक प्रसिद्ध बिल्ड टूल जो वास्तविक स्ट्रिपिंग करता है।
बेशक, सीमाएं मौजूद हैं, जैसे कि पहले उल्लिखित enums जैसी टाइपस्क्रिप्ट-विशिष्ट सुविधाओं का उपयोग करने में असमर्थता। लेकिन फिर भी, यह लोगों को एक सम फ़ंक्शन को दो नंबर स्वीकार करने और तीसरा लौटाने के लिए 135 कॉन्फ़िगरेशन फ़ाइलें लिखने से रोकने के लिए एक बड़ा कदम है।
सियाओ,
माइकल.
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3