टाइपस्क्रिप्ट प्रकार गार्ड
टाइप गार्ड टाइपस्क्रिप्ट में एक शक्तिशाली विशेषता है जो डेवलपर्स को किसी चर के प्रकार को कम करने के लिए रनटाइम जांच करने की अनुमति देता है। यह अधिक सटीक प्रकार की जानकारी सुनिश्चित करता है, जिससे सुरक्षित और अधिक पूर्वानुमानित कोड बनता है। यह लेख बताता है कि टाइप गार्ड क्या हैं और उनका प्रभावी ढंग से उपयोग कैसे किया जाए।
टाइप गार्ड क्या हैं?
टाइप गार्ड ऐसे एक्सप्रेशन हैं जो रनटाइम चेक करते हैं और टाइपस्क्रिप्ट को किसी वैरिएबल के लिए अधिक विशिष्ट प्रकार का अनुमान लगाने की अनुमति देते हैं। वे विभिन्न प्रकारों के बीच भेदभाव करने में मदद करते हैं, खासकर जब यूनियन प्रकारों से निपटना हो। टाइप गार्ड को विभिन्न तकनीकों का उपयोग करके लागू किया जा सकता है, जिनमें शामिल हैं:
- उपयोगकर्ता-परिभाषित प्रकार विधेय
- प्रकार अभिकथन
- इंस्टेंस जाँच
typeof
ऑपरेटर का उपयोग करनाin
ऑपरेटर का उपयोग करना
उपयोगकर्ता-परिभाषित प्रकार विधेय
उपयोगकर्ता-परिभाषित प्रकार के प्रेडिकेट ऐसे फ़ंक्शन हैं जो बूलियन मान लौटाते हैं और उनका एक विशेष रिटर्न प्रकार होता है जो जाँचे जा रहे चर के प्रकार को इंगित करता है। उन्हें बनाने और उपयोग करने का तरीका यहाँ बताया गया है:
function isString(value: any): value is string {
return typeof value === 'string';
}
function printString(value: any) {
if (isString(value)) {
console.log(value.toUpperCase()); // TypeScript knows value is a string here
} else {
console.log('Not a string');
}
}
उपरोक्त उदाहरण में, isString
एक उपयोगकर्ता-परिभाषित प्रकार प्रेडिकेट है जो टाइपस्क्रिप्ट को यह समझने में मदद करता है कि value
if
ब्लॉक के भीतर एक स्ट्रिंग है।
प्रकार अभिकथन
टाइप एसेर्संस TypeScript को किसी वैरिएबल को एक निश्चित प्रकार के रूप में मानने के लिए कहते हैं। यह विधि रनटाइम जांच नहीं करती है, लेकिन TypeScript कंपाइलर को प्रकार के बारे में सूचित करती है। उदाहरण के लिए:
function printLength(value: any) {
console.log((value as string).length); // Assert value is a string
}
इस उदाहरण में, value as string
TypeScript को यह मानने के लिए कहता है कि value
रनटाइम जांच किए बिना एक स्ट्रिंग है।
इंस्टेंस चेक
इंस्टेंस चेक का उपयोग यह निर्धारित करने के लिए किया जाता है कि कोई ऑब्जेक्ट किसी विशेष क्लास का इंस्टेंस है या नहीं। यह क्लास के साथ काम करते समय प्रकारों को सीमित करने के लिए उपयोगी है:
class Dog {
bark() { console.log('Woof'); }
}
class Cat {
meow() { console.log('Meow'); }
}
function speak(animal: Dog | Cat) {
if (animal instanceof Dog) {
animal.bark(); // TypeScript knows animal is a Dog here
} else {
animal.meow(); // TypeScript knows animal is a Cat here
}
}
इस उदाहरण में, instanceof
ऑपरेटर TypeScript को animal
के प्रकार को उसके वर्ग के आधार पर अनुमान लगाने में मदद करता है।
typeof
ऑपरेटर का उपयोग करना
typeof
ऑपरेटर का उपयोग आदिम प्रकारों जैसे string
, number
, और boolean
की जांच करने के लिए किया जा सकता है:
function processValue(value: string | number) {
if (typeof value === 'string') {
console.log(value.toUpperCase()); // TypeScript knows value is a string here
} else {
console.log(value.toFixed(2)); // TypeScript knows value is a number here
}
}
यहाँ, typeof
का प्रयोग यह जाँचने के लिए किया जाता है कि value
एक string
है या एक number
है, तथा तदनुसार प्रकार को संक्षिप्त करता है।
in
ऑपरेटर का उपयोग करना
in
ऑपरेटर किसी ऑब्जेक्ट में किसी प्रॉपर्टी की मौजूदगी की जांच करता है। यह उन प्रकारों के बीच अंतर करने के लिए उपयोगी है जो सामान्य गुण साझा करते हैं:
interface Bird {
fly: () => void;
}
interface Fish {
swim: () => void;
}
function move(creature: Bird | Fish) {
if ('fly' in creature) {
creature.fly(); // TypeScript knows creature is a Bird here
} else {
creature.swim(); // TypeScript knows creature is a Fish here
}
}
इस उदाहरण में, in
ऑपरेटर TypeScript को यह निर्धारित करने में मदद करता है कि creature
एक विधि की उपस्थिति के आधार पर एक Bird
है या एक Fish
है।
निष्कर्ष
टाइपस्क्रिप्ट टाइप गार्ड लचीले और सुरक्षित तरीके से टाइप के साथ काम करने के लिए आवश्यक उपकरण हैं। वे अधिक सटीक प्रकार की जाँच की अनुमति देते हैं और यह सुनिश्चित करके रनटाइम त्रुटियों को रोक सकते हैं कि विभिन्न परिदृश्यों में सही प्रकार का उपयोग किया जाता है। टाइप गार्ड को प्रभावी ढंग से समझना और उनका उपयोग करना अधिक मजबूत और रखरखाव योग्य टाइपस्क्रिप्ट कोड की ओर ले जा सकता है।