मैं अपने कोडबेस में शॉर्टकट के रूप में उपयोग करने के लिए document.createElement को अलियासिंग कर रहा हूं। विजुअल स्टूडियो कोड इस सरल घोषणा के आधार पर चर के प्रकार का अनुमान लगाने में सक्षम नहीं प्रतीत होता है, हालांकि मुझे यकीन नहीं है कि इसे उचित संकेत कैसे दिया जाए।

मैंने एक @type संकेत जोड़ने का प्रयास किया है जैसे @type {document.createElement} या @type {Function}। मुझे लगता है कि यह आंशिक रूप से काम करेगा यदि मैं इसे अपने स्वयं के फ़ंक्शन में लपेटता हूं और रिटर्न प्रकार को एलिमेंट या HTMLElement द्वारा घोषित करता हूं। लेकिन वह मुझे वही फ़ंक्शन हस्ताक्षर नहीं देगा जैसा document.createElement सामान्य रूप से मिलता है।

/** Shortcut for document.createElement - must have document bound to it */
const _ = document.createElement.bind(document);

मैं अपेक्षा करता हूं कि जब मैं अपने अंडरस्कोर के बाद कोष्ठक टाइप करूं तो मुझे वही फ़ंक्शन हस्ताक्षर और पैरामीटर संकेत दिखाई देंगे जैसे कि मैंने document.createElement टाइप किया था।

1
tczx3 27 अगस्त 2019, 17:56

1 उत्तर

सबसे बढ़िया उत्तर

@type jsdoc एनोटेशन के साथ संयुक्त typeof का उपयोग करने का प्रयास करें:

/** @type {typeof document.createElement} */
const _ = document.createElement.bind(document);

IntelliSense for bound function

आप सही रास्ते पर थे सिवाय इसके कि @type एनोटेशन एक प्रकार लेता है जबकि document.createElement एक रनटाइम एक्सप्रेशन है। टाइपस्क्रिप्ट से typeof प्रकार की क्वेरी की आवश्यकता होती है अभिव्यक्ति (जैसे document.createElement) और इसके प्रकार को लौटाता है।

वैकल्पिक रूप से, आप इसके बजाय Document प्रकार का उपयोग कर सकते हैं। वैश्विक document चर Document प्रकार का एक उदाहरण है:

/** @type {Document['createElement']} */
const _ = document.createElement.bind(document);
2
Matt Bierner 28 अगस्त 2019, 01:04