EDIT (Jun 5 2019): जबकि यह विचार कि "टाइपस्क्रिप्ट Map
मूल रूप से समर्थन करता है" अभी भी सही है, क्योंकि संस्करण 2.1 टाइपस्क्रिप्ट कुछ कहे जाने का समर्थन करता है Record
।
type MyMapLikeType = Record<string, IPerson>;
const peopleA: MyMapLikeType = {
"a": { name: "joe" },
"b": { name: "bart" },
};
दुर्भाग्य से पहला जेनेरिक पैरामीटर (कुंजी प्रकार) अभी भी पूरी तरह से सम्मानित नहीं है: यहां तक कि एक string
प्रकार के साथ , कुछ peopleA[0]
( जैसे number
) अभी भी मान्य है।
EDIT (अप्रैल 25 2016): नीचे दिया गया उत्तर पुराना है और इसे सर्वश्रेष्ठ उत्तर नहीं माना जाना चाहिए। टाइपस्क्रिप्ट अब "मूल रूप से" मैप्स का समर्थन करता है, इसलिए यह केवल ES6 मैप्स का उपयोग करने की अनुमति देता है जब आउटपुट ES6 होता है। ईएस 5 के लिए, यह पॉलीफिल प्रदान नहीं करता है; आपको उन्हें स्वयं एम्बेड करने की आवश्यकता है।
अधिक जानकारी के लिए, अधिक आधुनिक उत्तर के लिए नीचे दिए गए मोहम्मद हेगाज़ी के उत्तर का संदर्भ लें , या यहां तक कि एक छोटे संस्करण के लिए यह रेडिट टिप्पणी भी ।
1.5.0 बीटा के अनुसार, टाइपस्क्रिप्ट अभी तक मैप्स का समर्थन नहीं करता है । यह अभी तक रोडमैप का हिस्सा नहीं है ।
वर्तमान सबसे अच्छा समाधान टाइप किए गए कुंजी और मूल्य के साथ एक वस्तु है (कभी-कभी एक हैशमैप कहा जाता है)। प्रकार की कुंजियों के साथ एक वस्तु के लिए string
, और प्रकार के मूल्य number
:
var arr : { [key:string]:number; } = {};
कुछ चेतावनी, हालांकि:
- कुंजियाँ केवल प्रकार की
string
या हो सकती हैंnumber
- यह वास्तव में महत्वपूर्ण नहीं है कि आप मुख्य प्रकार के रूप में क्या उपयोग करते हैं, क्योंकि संख्या / तार अभी भी विनिमेय रूप से स्वीकार किए जाते हैं (केवल मूल्य लागू किया जाता है)।
उपरोक्त उदाहरण के साथ:
// OK:
arr["name"] = 1; // String key is fine
arr[0] = 0; // Number key is fine too
// Not OK:
arr[{ a: "a" }] = 2; // Invalid key
arr[3] = "name"; // Invalid value