खोज…


वाक्य - विन्यास

  • टाइपऑफ़ x === "टाइप नाम"
  • एक्स इंस्टोफ़ टाइपनेम
  • फ़ंक्शन (फू: कोई): फू टाइपनेम है {/ * कोड रिटर्निंग बूलियन * /}

टिप्पणियों

टाइपस्क्रिप्ट में टाइप एनोटेशन का उपयोग करने से आपके कोड से निपटने के लिए संभावित प्रकारों की कमी होती है, लेकिन रनवे के प्रकार के आधार पर विभिन्न कोड पथ लेने की आवश्यकता अभी भी आम है।

टाइप गार्ड आपको कोड लिखने देते हैं जो एक चर के रनटाइम प्रकार के आधार पर भेदभाव करते हैं, जबकि दृढ़ता से टाइप किए जाते हैं और जाति से बचते हैं (जिन्हें टाइप के रूप में भी जाना जाता है)।

Instof का उपयोग करना

instanceof लिए यह आवश्यक है कि चर any प्रकार का हो।

यह कोड ( इसे आज़माएं ):

class Pet { }
class Dog extends Pet {
    bark() {
        console.log("woof");
    }
}
class Cat extends Pet {
    purr() {
        console.log("meow");
    }
}

function example(foo: any) {
    if (foo instanceof Dog) {
        // foo is type Dog in this block
        foo.bark();
    }

    if (foo instanceof Cat) {
        // foo is type Cat in this block
        foo.purr();
    }
}

example(new Dog());
example(new Cat());

प्रिंट

woof
meom

सांत्वना देने के लिए।

टाइपोफ़ का उपयोग करना

typeof का उपयोग तब किया जाता है जब आपको टाइप number , string , boolean और symbol बीच अंतर करने की आवश्यकता होती है। अन्य स्ट्रिंग स्थिरांक त्रुटि नहीं करेंगे, लेकिन या तो संकीर्ण प्रकारों के लिए उपयोग नहीं किए जाएंगे।

instanceof विपरीत, typeof किसी भी प्रकार के चर के साथ काम करेगा। नीचे दिए गए उदाहरण में, number | string रूप में foo टाइप किया जा सकता है number | string मुद्दा के बिना number | string

यह कोड ( इसे आज़माएं ):

function example(foo: any) {
    if (typeof foo === "number") {
        // foo is type number in this block
        console.log(foo + 100);
    }

    if (typeof foo === "string") {
        // fooi is type string in this block
        console.log("not a number: " + foo);
    }
}

example(23);
example("foo");

प्रिंट

123
not a number: foo

रखवाली के कार्य

आप ऐसे कार्यों की घोषणा कर सकते हैं जो आपके द्वारा पसंद किए जाने वाले किसी भी तर्क का उपयोग करके गार्ड के रूप में कार्य करते हैं।

वे फार्म लेते हैं:

function functionName(variableName: any): variableName is DesiredType {
    // body that returns boolean
}

यदि फ़ंक्शन सही है, तो टाइपस्क्रिप्ट फ़ंक्शन को कॉल द्वारा संरक्षित किसी भी ब्लॉक में DesiredType के प्रकार को संकीर्ण करेगा।

उदाहरण के लिए ( इसे आज़माएं ):

function isString(test: any): test is string {
    return typeof test === "string";
}

function example(foo: any) {
    if (isString(foo)) {
        // foo is type as a string in this block
        console.log("it's a string: " + foo);
    } else {
        // foo is type any in this block
        console.log("don't know what this is! [" + foo + "]");
    }
}

example("hello world");          // prints "it's a string: hello world"
example({ something: "else" });  // prints "don't know what this is! [[object Object]]"

एक गार्ड के फंक्शन टाइप को डेडिकेट किया जाता है ( foo is Bar है जो रिटर्न रिटर्न टाइप पोजिशन में होता है) का इस्तेमाल कंपाइल टाइम पर संकीर्ण टाइप्स में किया जाता है, फंक्शन बॉडी को रनटाइम पर इस्तेमाल किया जाता है। प्रकार की भविष्यवाणी और फ़ंक्शन को सहमत होना चाहिए, या आपका कोड काम नहीं करेगा।

प्रकार गार्ड कार्यों का उपयोग करने की जरूरत नहीं typeof या instanceof वे और अधिक जटिल तर्क का उपयोग कर सकते।

उदाहरण के लिए, यह कोड निर्धारित करता है कि क्या आपने संस्करण स्ट्रिंग की जाँच करके एक jQuery वस्तु प्राप्त की है।

function isJQuery(foo): foo is JQuery {
    // test for jQuery's version string
    return foo.jquery !== undefined;
}

function example(foo) {
    if (isJQuery(foo)) {
        // foo is typed JQuery here
        foo.eq(0);
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow