ऑब्जेक्ट प्रॉपर्टी एक्सेस के लिए वैकल्पिक चेनिंग ऑपरेटर का उपयोग करना


14

टाइपस्क्रिप्ट 3.7 अब वैकल्पिक चेनिंग ऑपरेटर का समर्थन करता है । इसलिए, आप कोड लिख सकते हैं जैसे:

const value = a?.b?.c;

यानी, आप इस ऑपरेटर का उपयोग किसी वस्तु के गुणों तक पहुँचने के लिए कर सकते हैं, जहाँ ऑब्जेक्ट स्वयं nullया हो सकता है undefined। अब मैं जो करना चाहता हूं वह मूल रूप से एक ही है, लेकिन संपत्ति के नाम गतिशील हैं:

const value = a?[b]?.c;

हालाँकि, मुझे एक सिंटैक्स त्रुटि मिलती है:

त्रुटि TS1005: ':' अपेक्षित।

मुझसे यहां क्या गलत हो रहा है? क्या यह भी संभव है?

पुनश्च: प्रस्ताव का अर्थ यह प्रतीत होता है कि यह संभव नहीं है but (लेकिन शायद मुझे वाक्यविन्यास के उदाहरण गलत मिले)।


1
आप इस बिंदु को याद करते हैं, ऑपरेटर है?.
zxx

हां, निश्चित रूप से, बहुत बहुत धन्यवाद G
रॉडेन

जवाबों:


17

ब्रैकेट नोटेशन और वैकल्पिक चाइनिंग का उपयोग करते हुए एक संपत्ति तक पहुंचने पर, आपको ब्रैकेट के अलावा एक डॉट भी चाहिए:

const value = a?.[b]?.c;

यह सिंटैक्स है जिसे TC39 प्रस्ताव द्वारा अपनाया गया था , क्योंकि अन्यथा पार्सर के लिए यह पता लगाना कठिन है कि क्या यह ?एक टर्नरी अभिव्यक्ति का हिस्सा है या वैकल्पिक श्रृंखलन का हिस्सा है।


1
मैं मुश्किल को असंभव से बदल दूंगा
Vol7ron

@ vol7ron ऐसा क्यों है - मुझे लगता है कि यह आगे के लिए देख सकता है:
AnArrayOfFunctions

यह अंतर करने में सक्षम नहीं होगा, खासकर जब त्रुटियां हों।
Vol7ron
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.