टाइपस्क्रिप्ट सशर्त प्रकार

TypeScript में सशर्त प्रकार किसी शर्त पर निर्भर प्रकार बनाने का एक तरीका प्रदान करते हैं। वे प्रकार परिभाषाओं में अधिक लचीलापन और अभिव्यक्ति की अनुमति देते हैं, जिससे जटिल प्रकार के संबंधों को स्पष्ट और संक्षिप्त तरीके से मॉडल करना संभव हो जाता है। यह लेख बताता है कि TypeScript में सशर्त प्रकार कैसे काम करते हैं और उनके उपयोग को स्पष्ट करने के लिए उदाहरण प्रदान करता है।

सशर्त प्रकार क्या हैं?

सशर्त प्रकार उन प्रकारों के निर्माण को सक्षम करते हैं जिन्हें किसी शर्त के आधार पर चुना जाता है। वे प्रोग्रामिंग में सशर्त कथनों के समान हैं लेकिन प्रकार स्तर पर काम करते हैं। सशर्त प्रकार का मूल सिंटैक्स है:

type ConditionalType = T extends U ? X : Y;

इस वाक्यविन्यास में:

  • T वह प्रकार है जिसकी जाँच की जा रही है।
  • U वह प्रकार है जिसकी तुलना की जानी चाहिए।
  • यदि T, U को विस्तारित करता है, तो X लौटाया जाने वाला प्रकार है।
  • यदि T, U का विस्तार नहीं करता है, तो Y लौटाया जाने वाला प्रकार है।

सशर्त प्रकारों का मूल उदाहरण

यहां एक सशर्त प्रकार का सरल उदाहरण दिया गया है जो इस आधार पर विभिन्न प्रकार लौटाता है कि दिया गया प्रकार स्ट्रिंग है या नहीं:

type IsString = T extends string ? "String" : "Not a string";

type Result1 = IsString;  // Result1 is "String"
type Result2 = IsString;  // Result2 is "Not a string"

इस उदाहरण में, IsString जाँचता है कि क्या Tstring को एक्सटेंड करता है। अगर ऐसा है, तो परिणाम "String" होगा; अन्यथा, यह "Not a string" होगा।

जेनेरिक प्रकारों के साथ सशर्त प्रकारों का उपयोग करना

अधिक लचीली और पुन: प्रयोज्य प्रकार परिभाषाएँ बनाने के लिए सशर्त प्रकारों का उपयोग जेनेरिक प्रकारों के साथ भी किया जा सकता है। उदाहरण के लिए, एक प्रकार जो फ़ंक्शन के रिटर्न प्रकार को निकालता है:

type ReturnType = T extends (...args: any[]) => infer R ? R : never;

type FunctionType = (x: number) => string;

type Result = ReturnType;  // Result is string

इस उदाहरण में, ReturnType फ़ंक्शन प्रकार T के रिटर्न प्रकार R का अनुमान लगाने के लिए infer कीवर्ड का उपयोग करता है। यदि T एक फ़ंक्शन प्रकार है, तो ReturnType रिटर्न प्रकार होगा; अन्यथा, यह डिफ़ॉल्ट रूप से never होगा।

यूनियन प्रकारों के साथ सशर्त प्रकार

सशर्त प्रकार कई संभावित प्रकारों को संभालने के लिए यूनियन प्रकारों के साथ भी काम कर सकते हैं। उदाहरण के लिए, विभिन्न यूनियन सदस्यों के बीच अंतर करना:

type ExtractString = T extends string ? T : never;

type UnionType = string | number | boolean;

type Result = ExtractString;  // Result is string

इस उदाहरण में, ExtractString एक यूनियन प्रकार UnionType से string निकालता है, जिसके परिणामस्वरूप string प्राप्त होता है।

प्रकार मैपिंग के साथ सशर्त प्रकार

सशर्त प्रकारों को प्रकार मैपिंग के साथ संयोजित करके अधिक जटिल प्रकार परिवर्तन बनाए जा सकते हैं। उदाहरण के लिए, सशर्त प्रकार लागू करने के लिए प्रकारों की एक सरणी पर मैपिंग करना:

type MapArray = {
  [K in keyof T]: T[K] extends string ? T[K] : never;
};

type ArrayType = [string, number, boolean];

type MappedArray = MapArray;  // MappedArray is [string, never, never]

इस उदाहरण में, MapArray सरणी के प्रत्येक तत्व T पर मैप करता है और प्रत्येक तत्व पर एक सशर्त प्रकार लागू करता है, जिसके परिणामस्वरूप एक ऐसी सरणी बनती है जिसमें केवल स्ट्रिंग तत्व ही संरक्षित होते हैं।

निष्कर्ष

टाइपस्क्रिप्ट में सशर्त प्रकार लचीले और अभिव्यंजक प्रकार परिभाषाएँ बनाने के लिए एक शक्तिशाली उपकरण हैं। सशर्त प्रकारों का लाभ उठाकर, डेवलपर्स जटिल प्रकार के संबंधों को मॉडल कर सकते हैं, विभिन्न परिदृश्यों को संभाल सकते हैं और अपने टाइपस्क्रिप्ट कोड में प्रकार की सुरक्षा में सुधार कर सकते हैं। सशर्त प्रकारों का प्रभावी ढंग से उपयोग करने का तरीका समझना मज़बूत और रखरखाव योग्य टाइपस्क्रिप्ट कोड लिखने की क्षमता को महत्वपूर्ण रूप से बढ़ा सकता है।

लिंक
TypeScript