खोज…


कार्रवाई में सख्त अशक्त जांच

डिफ़ॉल्ट रूप से, टाइपस्क्रिप्ट के सभी प्रकार null अनुमति देते हैं:

function getId(x: Element) {
  return x.id;
}
getId(null);  // TypeScript does not complain, but this is a runtime error.

टाइपस्क्रिप्ट 2.0 सख्त नल जाँच के लिए समर्थन जोड़ता है। आप सेट करते हैं --strictNullChecks जब चल tsc (या अपने में इस ध्वज सेट tsconfig.json ), तो प्रकार अब परमिट null :

function getId(x: Element) {
  return x.id;
}
getId(null);  // error: Argument of type 'null' is not assignable to parameter of type 'Element'.

आपको स्पष्ट रूप से null मानों की अनुमति देनी चाहिए:

function getId(x: Element|null) {
  return x.id;  // error TS2531: Object is possibly 'null'.
}
getId(null);

एक उचित गार्ड के साथ, कोड प्रकार की जाँच करता है और सही ढंग से चलता है:

function getId(x: Element|null) {
  if (x) {
    return x.id;  // In this branch, x's type is Element
  } else {
    return null;  // In this branch, x's type is null.
  }
}
getId(null);

गैर-शून्य दावे

गैर-नल मुखर ऑपरेटर ! की अनुमति देता है, जब टाइपस्क्रिप्ट कंपाइलर स्वचालित रूप से अनुमान नहीं लगा सकता है कि एक अभिव्यक्ति null या undefined नहीं है:

type ListNode = { data: number; next?: ListNode; };

function addNext(node: ListNode) {
    if (node.next === undefined) {
        node.next = {data: 0};
    }
}

function setNextValue(node: ListNode, value: number) {
    addNext(node);
    
    // Even though we know `node.next` is defined because we just called `addNext`,
    // TypeScript isn't able to infer this in the line of code below:
    // node.next.data = value;
    
    // So, we can use the non-null assertion operator, !,
    // to assert that node.next isn't undefined and silence the compiler warning
    node.next!.data = value;
}


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