मानचित्र का उपयोग करने के अलावा- वस्तु की तरह , पिछले कुछ समय से एक वास्तविक Map
वस्तु है , जो ES6 के संकलन के समय टाइपस्क्रिप्ट में उपलब्ध है, या जब ES6 प्रकार की परिभाषाओं के साथ एक पॉलीफ़िल का उपयोग कर रहा है :
let people = new Map<string, Person>();
यह समान कार्यक्षमता का समर्थन करता है Object
, और अधिक, थोड़ा अलग वाक्यविन्यास के साथ:
// Adding an item (a key-value pair):
people.set("John", { firstName: "John", lastName: "Doe" });
// Checking for the presence of a key:
people.has("John"); // true
// Retrieving a value by a key:
people.get("John").lastName; // "Doe"
// Deleting an item by a key:
people.delete("John");
अकेले ही मानचित्र का उपयोग करने के कई फायदे हैं - जैसे वस्तु, जैसे:
- गैर-स्ट्रिंग आधारित कुंजियों के लिए समर्थन, उदाहरण के लिए नंबर या ऑब्जेक्ट, जिनमें से
Object
कोई भी समर्थित नहीं है (नहीं, Object
संख्याओं का समर्थन नहीं करता है, यह उन्हें स्ट्रिंग्स में परिवर्तित करता है)
- उपयोग न करने पर त्रुटियों के लिए कम कमरा
--noImplicitAny
, Map
हमेशा की तरह एक कुंजी प्रकार और एक मूल्य प्रकार होता है, जबकि किसी ऑब्जेक्ट में इंडेक्स हस्ताक्षर नहीं हो सकता है
- आइटम को जोड़ने / निकालने की कार्यक्षमता (की-वैल्यू पेयर) को कार्य के लिए ऑप्टिमाइज़ किया जाता है, ए पर गुण बनाने के विपरीत
Object
इसके अतिरिक्त, एक Map
वस्तु आम कार्यों के लिए अधिक शक्तिशाली और सुरुचिपूर्ण एपीआई प्रदान करती है, जिनमें से अधिकांश सरल Object
एस के माध्यम से एक साथ हेल्पर कार्यों को हैक किए बिना उपलब्ध नहीं होती हैं (हालांकि इनमें से कुछ को ES5 लक्ष्यों या नीचे के लिए एक पूर्ण ES6 पुनरावृत्ति / चलने योग्य पॉलीफ़िल की आवश्यकता होती है:
// Iterate over Map entries:
people.forEach((person, key) => ...);
// Clear the Map:
people.clear();
// Get Map size:
people.size;
// Extract keys into array (in insertion order):
let keys = Array.from(people.keys());
// Extract values into array (in insertion order):
let values = Array.from(people.values());