TypeScript में जेनरिक्स की कंस्ट्रेंट्स में टाइप पैरामीटर्स का उपयोग
TypeScript में एक टाइप पैरामीटर को दूसरे टाइप पैरामीटर द्वारा सीमित करने की भी सुविधा है। यह तब आवश्यक होता है जब एक ऑब्जेक्ट के गुणों को दूसरे ऑब्जेक्ट में कॉपी करना होता है, साथ ही यह सुनिश्चित करना होता है कि हम कोई अतिरिक्त गुण पास नहीं कर रहे हैं।
आइए निम्नलिखित उदाहरण देखें। फिर से
फ़ंक्शन myFunc पर वापस आते हैं, जो
एक वेरिएबल की लंबाई निर्धारित करता है:
function myFunc <T> (data: T): T {
console.log(data.length); // त्रुटि
return data;
}
हालाँकि अब हम चाहते हैं कि यह फ़ंक्शन
केवल उन्हीं टाइप्स के साथ काम करे जिनमें
गुण length हो। इसके लिए इंटरफेस
ILength बनाते हैं, जिसमें
गुण length संख्यात्मक टाइप का होगा:
interface ILength {
length: number;
}
अगला, हमारे फ़ंक्शन में एक जेनरिक
टाइप परिभाषित करते हैं, जो ILength
से कीवर्ड extends के माध्यम से विरासत में मिलता है:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
हमारा पूरा कोड इस तरह दिखता है:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
आइए हमारे फ़ंक्शन के काम की जाँच करें और स्ट्रिंग की लंबाई ज्ञात करें:
console.log(myFunc('abcde'));
निष्पादित कोड का परिणाम:
5
'abcde'
और अब पैरामीटर में एक ऐरे पास करते हैं:
console.log(myFunc(['a', 'b', 'c']));
निष्पादित कोड का परिणाम:
3
[ 'a', 'b', 'c' ]