टाइपस्क्रिप्ट: का अर्थ? तथा ! वर्ग गुणों में

Aug 17 2020
@Column({ name: 'device_kind', type: 'int2', nullable: false })
deviceKind?: number;

क्या किसी के द्वारा इस कोड की व्याख्या की जा सकती है? मुझे समझ नहीं आया कि उन्होंने 'क्यों जोड़ा?' निशान। और उनमें से कुछ ने '!' प्रश्न चिह्न के बजाय। उनका क्या मतलब है?

जवाब

2 Evert Aug 18 2020 at 01:49

यह वास्तव में एक टाइपस्क्रिप्ट प्रश्न है, टाइपफॉर्म नहीं।

जब आप किसी संपत्ति को इस तरह परिभाषित करते हैं:

type Foo = {
  prop1?: number
}

आप कह रहे हैं prop1वैकल्पिक है।

जब कोई संपत्ति !इसके साथ होती है, तो इसका मतलब है कि आप टाइपस्क्रिप्ट को बता रहे हैं कि आपको यह चेतावनी नहीं देनी चाहिए कि आपने इसे कंस्ट्रक्टर में शुरू नहीं किया था (जो सामान्य रूप से सख्त मोड में शिकायत करेगा)।

उदाहरण:

class Foo {
  // Typescript does not complain about `a` because we set it in the constructor
  public a: number;

  // Typescript will complain about `b` because we forgot it.
  public b: number;

  // Typescript will not complain about `c` because we told it not to.
  public c!: number;

  // Typescript will not complain about `d` because it's optional and is
  // allowed to be undefined.
  public d?: number;

  constructor() {
    this.a = 5;
  }

}

यह ध्यान दिया जाना चाहिए कि c!उपरोक्त वर्ग में मामला वास्तव में टाइपस्क्रिप्ट को बताने का एक तरीका है: "मुझे पता है कि मैं क्या कर रहा हूं, मुझे पता है कि मैं इसे कहीं स्थापित कर रहा हूं, बस निर्माता में नहीं। कृपया शिकायत न करें"।

यह d?मामला जैसा है वैसा नहीं है , क्योंकि इसका मतलब यह dहै कि अनुमति दी जानी चाहिए number या undefined