मैं टाइपस्क्रिप्ट में अपने कुछ जावास्क्रिप्ट कोड को फिर से लिखने की कोशिश कर रहा हूं। इस कोड में से कुछ में स्ट्रिंग ऑब्जेक्ट प्रोटोटाइप में जोड़े गए एक्सटेंशन के संदर्भ हैं।टाइपस्क्रिप्ट में मूल प्रकार बढ़ाएं, त्रुटि: "_this परिभाषित नहीं है ..."
String.prototype.format = function() {
var formatted = this;
for (var i = 0; i < arguments.length; i++) {
formatted = formatted.replace(
RegExp("\\{" + i + "\\}", 'g'), arguments[i].toString());
}
return formatted;
};
हालांकि टाइप स्क्रिप्ट के साथ इसे जोड़ना काफी चुनौतीपूर्ण रहा है।
मैंने उदाहरण देखा है जहां आप मूल इंटरफ़ेस का विस्तार घोषित करते हैं और फिर इंटरफ़ेस से मेल खाने के लिए प्रोटोटाइप को फ़ंक्शन असाइन करते हैं और अपनी कार्यक्षमता प्रदान करते हैं। इसलिए जैसा ...
interface String {
showString:() => string;
}
String.prototype.showString =(): string {
return this;
};
इस त्रुटियों क्योंकि सिवाय "केवल इस परिभाषित नहीं है ..."
अन्य बातों मैं कोशिश की है
स्ट्रिंग विस्तार करने के लिए एक नया वर्ग बनाने के लिए है ...export class MoreString extends string {
}
हालांकि यह भी काम नहीं करता है क्योंकि आप केवल कक्षाएं बढ़ा सकते हैं और स्ट्रिंग/स्ट्रिंग कक्षाएं नहीं हैं बल्कि प्रकारों में निर्मित हैं।
स्ट्रिंग का विस्तार करने और मेरी विस्तार विधि तक पहुंचने का सबसे आसान तरीका क्या है?
लेकिन में जहां कोड आप इस परिभाषा को जोड़ते हैं? क्योंकि मुझे एक संपत्ति 'myExtension' मिलता है, 'स्ट्रिंग' प्रकार पर मौजूद नहीं है, इसलिए यह संकलन नहीं कर रहा है। मेरे पास मॉड्यूल परिभाषा के अंदर कोड का यह टुकड़ा है। – Oscar
यह मेरे लिए काम करता है, टैंक! – Benoit
@ ऑस्कर वही, मेरा –