टाइपस्क्रिप्ट में मानचित्र आरंभीकरण [डुप्लिकेट]
मैं टाइपस्क्रिप्ट में मानचित्र के नीचे आरंभ करने का प्रयास कर रहा हूं। जब मैं इसे प्रिंट करता हूं, तो यह खाली लगता है।
let map: Map<string, object> = new Map<string, object> ([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(JSON.stringify(map));
// printing {}
// but not the initialized values
जवाब
इसे प्रारंभिक रूप से ठीक किया गया है, लेकिन इसे प्रिंट करना किसी सरणी की तरह सभी मानों को प्रिंट नहीं करता है। लेकिन आप इसे केवल कुंजियों को एक्सेस करके देख सकते हैं - वे मौजूद हैं:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(map);
console.log(map.get('api/service/method'));
console.log(map.get('"type": "html"'));
प्रासंगिक भी: मैं कंसोल में एक जावास्क्रिप्ट ईएस 6 मैप ऑब्जेक्ट कैसे प्रदर्शित कर सकता हूं?
जैसा कि वहां कहा गया है कि आप सिर्फ नक्शा फैला सकते हैं और प्रिंट कर सकते हैं:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
ऐसा इसलिए JSON.stringify
है क्योंकि किसी मैप को स्ट्रिंग करना नहीं जानता है, इसलिए यह अंतर्निहित ऑब्जेक्ट को स्ट्रिंग करने की कोशिश करेगा, जिसके परिणामस्वरूप एक खाली ऑब्जेक्ट है।
console.log(JSON.stringify([...a.entries()]));
इसके बजाय कोशिश करें
किसी ऑब्जेक्ट को स्ट्रिफ़ाइज़ करना इसके गुणों को कड़ा करना शामिल है, लेकिन Map
इसके डेटा को बचाने के लिए गुणों का उपयोग नहीं करता है। इस प्रकार आपको एक खाली वस्तु मिल जाती है यदि आप भोलेपन से उसे कठोर करते हैं।
इसके बजाय इसे पहले एक सरणी में बदलें:
console.log(JSON.stringify([...map]));
जब आप मैप पर JSON.stringify () का उपयोग करते हैं, तो यह आपको हमेशा {} देता रहेगा। यदि टाइपस्क्रिप्ट कहता है कि आप इसे सही तरीके से कर रहे हैं, तो मानचित्र को संभवतः सही ढंग से आरंभ किया गया था।