टाइपस्क्रिप्ट में मानचित्र आरंभीकरण [डुप्लिकेट]

Aug 17 2020

मैं टाइपस्क्रिप्ट में मानचित्र के नीचे आरंभ करने का प्रयास कर रहा हूं। जब मैं इसे प्रिंट करता हूं, तो यह खाली लगता है।

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

जवाब

1 MauriceNino Aug 17 2020 at 14:35

इसे प्रारंभिक रूप से ठीक किया गया है, लेकिन इसे प्रिंट करना किसी सरणी की तरह सभी मानों को प्रिंट नहीं करता है। लेकिन आप इसे केवल कुंजियों को एक्सेस करके देख सकते हैं - वे मौजूद हैं:

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]);

JessevanAssen Aug 17 2020 at 14:35

ऐसा इसलिए JSON.stringifyहै क्योंकि किसी मैप को स्ट्रिंग करना नहीं जानता है, इसलिए यह अंतर्निहित ऑब्जेक्ट को स्ट्रिंग करने की कोशिश करेगा, जिसके परिणामस्वरूप एक खाली ऑब्जेक्ट है।

console.log(JSON.stringify([...a.entries()]));इसके बजाय कोशिश करें

NiettheDarkAbsol Aug 17 2020 at 14:35

किसी ऑब्जेक्ट को स्ट्रिफ़ाइज़ करना इसके गुणों को कड़ा करना शामिल है, लेकिन Mapइसके डेटा को बचाने के लिए गुणों का उपयोग नहीं करता है। इस प्रकार आपको एक खाली वस्तु मिल जाती है यदि आप भोलेपन से उसे कठोर करते हैं।

इसके बजाय इसे पहले एक सरणी में बदलें:

console.log(JSON.stringify([...map]));
LionelFoxcroft Aug 17 2020 at 14:39

जब आप मैप पर JSON.stringify () का उपयोग करते हैं, तो यह आपको हमेशा {} देता रहेगा। यदि टाइपस्क्रिप्ट कहता है कि आप इसे सही तरीके से कर रहे हैं, तो मानचित्र को संभवतः सही ढंग से आरंभ किया गया था।