मैं MDN के कहने के बाद से एक ऑब्जेक्ट को कुंजी-प्रकार के प्रतीक के रूप में परिभाषित करने की कोशिश कर रहा हूं :
एक प्रतीक मूल्य का उपयोग वस्तु गुणों के लिए एक पहचानकर्ता के रूप में किया जा सकता है [...]
लेकिन कुंजी-संपत्ति के लिए इसे टाइप के रूप में उपयोग करना:
type obj = {
[key: symbol | string]: string
}
निम्नलिखित त्रुटि के परिणाम:
TS1023: एक इंडेक्स सिग्नेचर पैरामीटर टाइप 'स्ट्रिंग' या 'नंबर' होना चाहिए।
यहां तक कि इसे सूचकांक-प्रकार के रूप में इस्तेमाल किया जा सकता है। मैं नवीनतम टाइपस्क्रिप्ट संस्करण का उपयोग कर रहा हूं ( v3.7.2
), संबंधित प्रश्न जो मैंने पाया है:
- टाइपस्क्रिप्ट: कुंजी के रूप में प्रतीकों के साथ एक वस्तु को नष्ट करना (वह एक प्रतीक के वास्तविक उदाहरण का उपयोग कर रहा है, मुझे टाइप चाहिए
symbol
) - टाइपस्क्रिप्ट: स्ट्रिंग का उपयोग करने का प्रयास करते समय एक इंडेक्स सिग्नेचर पैरामीटर एक 'स्ट्रिंग' या 'संख्या' होना चाहिए संख्या
- ES6: प्रतीकों के साथ एक ऑब्जेक्ट को कुंजियों के रूप में नष्ट करना (यह एक समाधान नहीं हो सकता है - यह एक वास्तविक उदाहरण का उपयोग करने के लिए थोड़े गलत लगता है क्योंकि प्रत्येक प्रतीक उदाहरण अद्वितीय है ...)
मैंने टाइपस्क्रिप्ट प्रतीक डॉक्स पर भी एक नज़र डाली है, लेकिन वे केवल यह दिखाते हैं कि इसका उपयोग मूल्य के रूप में कैसे किया जाता है, न कि प्रकार के रूप में।
उदाहरण:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
any
जो कि बुरा अभ्यास है)।
Map<Symbol,String>
हमारे पास मैप के रूप में उपयोग करने की कोशिश की है , अगर वह उस उद्देश्य को पूरा करेगा जो आप प्राप्त करने की कोशिश कर रहे हैं
symbol
? हो सकता है कि आप अपना उपयोग कैसे करना चाहते हैं, इसका एक उदाहरण दिखाएंtype obj
- मुझे संदेह है कि सभी प्रतीक-कुंजी गुण होंगेstring
।