• 2023 में Svelte repository के refactoring PR ने JSDoc-आधारित कोड में बदलाव किया और TypeScript skeptics का ध्यान खींचा
  • Svelte ने इसे TypeScript-विरोधी रुख नहीं, बल्कि TypeScript पर लगातार निर्भरता का हिस्सा बताया
  • लेख JSDoc और TypeScript को आमने-सामने रखने के बजाय यह ज़ोर देता है कि JSDoc खुद TypeScript का ही हिस्सा है
  • TypeScript एक IntelliSense engine के रूप में काम करता है, जो JSDoc comments की व्याख्या और code autocomplete दोनों संभालता है
  • JSDoc बिना build step के वही static analysis क्षमता देता है, और आधुनिक JS projects में व्यवहारिक रूप से TypeScript जैसी ही भूमिका निभाता है

Svelte PR और विवाद की पृष्ठभूमि

  • मई 2023 में Svelte repository का internal refactoring PR Hacker News के पहले पेज पर पहुंचा
    • इस PR में .ts files के type declarations को .js files के JSDoc comments में स्थानांतरित किया गया था
    • कुछ लोगों ने इसे TypeScript के फायदों को नकारने के रूप में देखा
  • Svelte के creator Rich Harris ने HN पर सीधे समझाया कि “यह TypeScript के खिलाफ नहीं है”
    • उन्होंने कहा कि Svelte की TypeScript के प्रति प्रतिबद्धता अब भी मजबूत है
  • इस घटना के बाद “TypeScript vs JSDoc” तुलना वाले कई लेख सामने आए, और JSDoc को “build step के बिना TypeScript” कहने का रुझान फैलने लगा

TypeScript की उत्पत्ति और मूल स्वभाव

  • 2000 के दशक के अंत से 2010 के शुरुआती वर्षों तक JavaScript को autocomplete और type safety की कमी वाली भाषा माना जाता था
    • Microsoft developers ने ScriptSharp का उपयोग करके C# code को JS में बदलने के तरीके से इस समस्या का समाधान किया
  • इसी पृष्ठभूमि में TypeScript का जन्म हुआ, और इसकी शुरुआत मूल रूप से JS development को बेहतर बनाने वाले build tool के रूप में हुई

TypeScript ही IntelliSense है

  • TypeScript सिर्फ एक language नहीं, बल्कि IntelliSense engine की भूमिका निभाता है
    • .ts files का उपयोग न करने पर भी code autocomplete, parameter info और symbol navigation जैसी सुविधाएं TypeScript language service ही देती हैं
    • अधिकांश editors में JS code लिखते समय भी TypeScript service backend के रूप में चलती है

TypeScript ही JSDoc है

  • TypeScript language service का उपयोग JSDoc comments की व्याख्या के लिए भी किया जाता है
    • TypeScript के CHANGELOG में JSDoc से जुड़ी features के जोड़े जाने का विवरण अक्सर शामिल होता है
    • JSDoc-आधारित projects को tsconfig.json से configure किया जा सकता है, और tsc command से type checking भी की जा सकती है
  • इसलिए JSDoc का उपयोग करने वाले developers भी वास्तव में पहले से TypeScript का उपयोग कर रहे होते हैं

JSDoc-आधारित project का अनुभव

  • लेखक ने अपने एक मौजूदा project के frontend को JSDoc type annotations के आधार पर दोबारा लिखने का अनुभव साझा किया
    • enum जैसे runtime features को छोड़ दें, तो TypeScript की अधिकांश अभिव्यक्तियां JSDoc में संभव हैं
    • generics का syntax थोड़ा जटिल है, लेकिन इससे type inference का अधिक सक्रिय उपयोग होता है
  • JSDoc projects में function पर click करने पर सीधे वास्तविक code तक जाया जा सकता है, जिससे development experience बेहतर होता है
  • TypeScript tooling ecosystem को JSDoc projects में भी दोबारा इस्तेमाल किया जा सकता है
    • उदाहरण: OpenAPI या GraphQL schema से types generate करने वाली libraries JSDoc comments के रूप में types generate कर सकती हैं

निष्कर्ष और अतिरिक्त उदाहरण

  • JSDoc, TypeScript का विकल्प नहीं, बल्कि उसी static analysis system को साझा करता है
    • build step हटाकर भी यह समान स्तर की type safety दे सकता है
  • अतिरिक्त रूप से, webpack project के JSDoc में migrate होने का उदाहरण भी दिया गया है
  • TypeScript expert के रूप में लेखक साफ तौर पर यह रुख रखते हैं: “JSDoc ही TypeScript है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.