टाइपस्क्रिप्ट का रहस्य: क्या टाइप इंफेरेंस एक 'भद्दा हैक' है या अगली पीढ़ी का कोड?

टाइपस्क्रिप्ट का रहस्य: क्या टाइप इंफेरेंस एक 'भद्दा हैक' है या अगली पीढ़ी का कोड? · Avonetics
प्रोग्रामिंग की दुनिया हमेशा नई तकनीकों और दृष्टिकोणों पर बहस करती रहती है। हाल ही में, एक ब्लॉग पोस्ट जिसका शीर्षक था "टाइप इंफेरेंस पर" ने इसी तरह की एक गरमागरम बहस छेड़ दी है, खासकर टाइपस्क्रिप्ट के टाइप इंफेरेंस सिस्टम के आसपास।
कुछ डेवलपर्स ने पोस्ट के शीर्षक को "आलसी, उबाऊ और आडंबरपूर्ण" बताया है, यह तर्क देते हुए कि यह चार्ल्स डार्विन की "उत्पत्ति" नहीं है। लेकिन असली चर्चा तब शुरू हुई जब टाइपस्क्रिप्ट के टाइप इंफेरेंस के आंतरिक कामकाज पर सवाल उठाए गए।
Read nextडेटिंग का कड़वा सच: क्या कम आकर्षक होना आज के दौर में सबसे बड़ा सामाजिक पाप बन चुका है?
विवाद का केंद्रबिंदु यह है कि क्या एक फ़ंक्शन जो `{x: number}` घोषित करता है, उसमें `{x: number, y: number}` वापस करना "स्पष्ट रूप से गलत" है। एक टिप्पणीकार ने दृढ़ता से तर्क दिया, "टाइपस्क्रिप्ट अपने मूल में संरचनात्मक है जिसमें ओपन प्रोडक्ट टाइप्स होते हैं। यदि कुछ भी है, तो शाब्दिकों के साथ वह छोटा सा नृत्य एक भद्दा हैक है, शायद औसत 'स्ट्रॉन्ग टाइप्स!' उपयोगकर्ता को समायोजित करने के लिए किया गया है जो बंद प्रोडक्ट टाइप्स के साथ नॉमिनल टाइप सिस्टम के बाहर नहीं सोच सकता है।"
यह टिप्पणी इस विचार को प्रस्तुत करती है कि टाइपस्क्रिप्ट का व्यवहार, जो कुछ डेवलपर्स के लिए अप्रत्याशित लग सकता है, वास्तव में एक जानबूझकर डिजाइन विकल्प है जो संरचनात्मक टाइपिंग के दर्शन के अनुरूप है। संरचनात्मक टाइपिंग में, प्रकारों की तुलना उनके नाम के बजाय उनकी संरचना के आधार पर की जाती है। इसका मतलब है कि यदि `{x: number, y: number}` में `{x: number}` की सभी आवश्यक विशेषताएं हैं, तो उन्हें संगत माना जा सकता है।
हालांकि, हर कोई इस दृष्टिकोण से सहमत नहीं है। एक अन्य टिप्पणीकार ने सीधे कहा, "यदि किसी चीज़ को 'टाइप इंफेरेंस' कहा जाता है, तो मैं मानता हूँ कि यह टाइप इंफेरेंस पर है।" यह टिप्पणी इस बात पर प्रकाश डालती है कि कई डेवलपर्स टाइप इंफेरेंस से एक अधिक सीधा और स्पष्ट व्यवहार की उम्मीद करते हैं, जहां एक फ़ंक्शन का घोषित प्रकार उसके रिटर्न प्रकार के साथ पूरी तरह से मेल खाता है, बिना किसी "अतिरिक्त" गुण के।
यह बहस सिर्फ एक तकनीकी विवरण से कहीं अधिक है। यह इस बात पर सवाल उठाती है कि प्रोग्रामिंग भाषाओं को कैसे डिज़ाइन किया जाना चाहिए, वे डेवलपर्स के साथ कैसे इंटरैक्ट करती हैं, और कोड की पठनीयता और रखरखाव के लिए सबसे अच्छा दृष्टिकोण क्या है। क्या हमें अधिक लचीली, संरचनात्मक प्रणालियों को अपनाना चाहिए जो अधिक शक्तिशाली कोड की अनुमति देती हैं, या हमें उन प्रणालियों की ओर झुकना चाहिए जो सीधे और स्पष्ट हैं, भले ही वे कम लचीली हों?
Your brand, right here.Reach story-obsessed listeners in 45+ languages → advertise on Avoneticsकुछ लोग तर्क देते हैं कि टाइपस्क्रिप्ट का दृष्टिकोण आधुनिक वेब विकास के लिए आवश्यक लचीलापन प्रदान करता है, जहां डेटा के आकार लगातार विकसित हो रहे हैं। वे शाब्दिक प्रकारों के साथ "नृत्य" को एक आवश्यक सुविधा के रूप में देखते हैं जो जटिल डेटा संरचनाओं को अधिक प्रभावी ढंग से मॉडल करने में मदद करता है।
दूसरी ओर, आलोचकों का तर्क है कि इस तरह की लचीली टाइपिंग से अप्रत्याशित व्यवहार और बग हो सकते हैं, खासकर बड़े कोडबेस में जहां कई डेवलपर्स काम कर रहे होते हैं। उनका मानना है कि एक सख्त, अधिक अनुमानित टाइप सिस्टम अंततः बेहतर कोड गुणवत्ता और कम त्रुटियों की ओर ले जाता है।
यह बहस टाइपिंग के दर्शन के मूल में जाती है: क्या एक भाषा को डेवलपर्स को सबसे अधिक स्वतंत्रता देनी चाहिए, या उसे उन्हें सर्वोत्तम प्रथाओं की ओर निर्देशित करना चाहिए? क्या टाइपस्क्रिप्ट का "ओपन" दृष्टिकोण एक ताकत है, या यह एक ऐसा "हैंक" है जो भ्रम पैदा करता है?
यह एक ऐसी कहानी है जिस पर हमारे शो के होस्ट "फुल चार्ज" में गहराई से विचार कर रहे हैं।