टाइपस्क्रिप्ट में एक्सटेंडेड कीवर्ड एक प्रकार का स्विस आर्मी चाकू है। इसका उपयोग कई संदर्भों में किया जाता है, जिसमें वंशानुक्रम, जेनेरिक और सशर्त प्रकार शामिल हैं। एक्सटेंड का प्रभावी ढंग से उपयोग करने के तरीके को समझने से अधिक मजबूत, पुन: प्रयोज्य और प्रकार-सुरक्षित कोड प्राप्त हो सकता है।
एक्सटेंड के प्राथमिक उपयोगों में से एक इनहेरिटेंस में है, जो आपको नए इंटरफेस या कक्षाएं बनाने की अनुमति देता है जो मौजूदा इंटरफेस पर आधारित होते हैं।
interface User { firstName: string; lastName: string; email: string; } interface StaffUser extends User { roles: string[]; department: string; } const regularUser: User = { firstName: "John", lastName: "Doe", email: "[email protected]" }; const staffMember: StaffUser = { firstName: "Jane", lastName: "Smith", email: "[email protected]", roles: ["Manager", "Developer"], department: "Engineering" };
इस उदाहरण में, स्टाफयूजर उपयोगकर्ता का विस्तार करता है, उसकी सभी संपत्तियों को विरासत में लेता है और नए जोड़ता है। यह हमें अधिक सामान्य प्रकारों के आधार पर अधिक विशिष्ट प्रकार बनाने की अनुमति देता है।
विस्तारित कीवर्ड का उपयोग क्लास इनहेरिटेंस के लिए भी किया जाता है:
class Animal { constructor(public name: string) {} makeSound(): void { console.log("Some generic animal sound"); } } class Dog extends Animal { constructor(name: string, public breed: string) { super(name); } makeSound(): void { console.log("Woof! Woof!"); } fetch(): void { console.log(`${this.name} is fetching the ball!`); } } const myDog = new Dog("Buddy", "Golden Retriever"); myDog.makeSound(); // Output: Woof! Woof! myDog.fetch(); // Output: Buddy is fetching the ball!
यहां, कुत्ता पशु का विस्तार करता है, उसके गुणों और तरीकों को विरासत में लेता है, और अपना खुद का भी जोड़ता है।
एक्सटेंड्स कीवर्ड जेनेरिक के साथ काम करते समय महत्वपूर्ण है, जो हमें उन प्रकारों को सीमित करने की अनुमति देता है जिनका उपयोग जेनेरिक फ़ंक्शन या क्लास के साथ किया जा सकता है।
interface Printable { print(): void; } function printObject(obj: T) { obj.print(); } class Book implements Printable { print() { console.log("Printing a book."); } } class Magazine implements Printable { print() { console.log("Printing a magazine."); } } const myBook = new Book(); const myMagazine = new Magazine(); printObject(myBook); // Output: Printing a book. printObject(myMagazine); // Output: Printing a magazine. // printObject(42); // Error, number doesn't have a 'print' method
संक्षेप में, फ़ंक्शन प्रिंटऑब्जेक्ट(ओबीजे: टी) के संदर्भ में एक्सटेंडेड कीवर्ड का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि तर्क के रूप में उपयोग किया जाने वाला प्रकार टी प्रिंटेबल इंटरफ़ेस द्वारा परिभाषित अनुबंध का पालन करता है। यह सुनिश्चित करता है कि प्रिंटऑब्जेक्ट फ़ंक्शन के साथ केवल प्रिंट विधि वाले प्रकारों का उपयोग किया जा सकता है, जो फ़ंक्शन के उपयोग के लिए एक विशिष्ट व्यवहार और अनुबंध को लागू करता है।
T extends U ? X : Y
type ExtractNumber= T extends number ? T : never; type NumberOrNever = ExtractNumber ; // number type StringOrNever = ExtractNumber ; // never
यहां, ExtractNumber प्रकार एक प्रकार का पैरामीटर T लेता है। सशर्त प्रकार यह जांचता है कि T संख्या प्रकार का विस्तार करता है या नहीं। यदि ऐसा होता है, तो प्रकार T (जो कि संख्या प्रकार है) में परिवर्तित हो जाता है। यदि ऐसा नहीं होता है, तो प्रकार कभी नहीं का समाधान करता है।
अब, आइए अभिव्यक्ति ए | पर विचार करें बी | सी, ए का विस्तार करता है। यह पहली बार में उल्टा लग सकता है, लेकिन टाइपस्क्रिप्ट में, यह स्थिति वास्तव में गलत है। उसकी वजह यहाँ है:
type Fruit = "apple" | "banana" | "cherry"; type CitrusFruit = "lemon" | "orange"; type IsCitrus= T extends CitrusFruit ? true : false; type Test1 = IsCitrus; // true type Test2 = IsCitrus; // false type Test3 = IsCitrus ; // false
इस उदाहरण में, IsCitrus
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3