2013-04-07 12 views
13

टाइपस्क्रिप्ट में, Array और any[] के बीच क्या अंतर है? क्या ऐरे गतिशील रूप से आकार वाले सरणी (निश्चित रूप से संकलन-समय के दौरान) और any[] को तर्कसंगत आकार के सरणी को संदर्भित करता है और संकलक द्वारा टाइप-अनुमानित संदर्भित करता है? क्योंकि वर्तमान में जब मैं इस तरह के रूप में कार्य करता है:टाइपस्क्रिप्ट ऐरे बनाम किसी भी []

mergeArrays(arr1 : Array, arr2 : Array); 

जब आप स्थिर डेटा के साथ इस समारोह फोन, टाइपप्रति एक टाइप किया सरणी (type[]) का उपयोग करता है।

mergeArrays([true, false], [1, 2]); 
//   bool[]   number[] 

तो क्या 2 के बीच कोई संकलन-समय अंतर है? मैं any[] का उपयोग कब करूं और मैं Array का उपयोग कब करूं? कभी कभी Array साथ वार्स को परिभाषित ..

var info:Array; 

..show तरह त्रुटियों "किसी भी [] [] कनवर्ट नहीं कर सकता सरणी के लिए" जब सेटिंग इस प्रकार है:

info = [[], []]; 

उत्तर

8

युक्ति खंड 3.5.4 उनके रिश्ते को निर्दिष्ट करता है :

रूप ElementType[] की एक सरणी प्रकार प्लस सूचकांक हस्ताक्षर [index: number]: ElementType के साथ एक वस्तु प्रकार वैश्विक इंटरफ़ेस Ty के बराबर सदस्यों का एक सेट के बराबर है पे Array जहां जादू _element प्रकार की सभी घटनाओं को ElementType के साथ प्रतिस्थापित किया गया है।

नहीं Array को [[], []] या [] आवंटित करने के लिए सक्षम किया जा रहा एक बग है।

टाइपस्क्रिप्ट में "स्थिर रूप से आकार" सरणी की कोई धारणा नहीं है। वे सभी एक ही अंतर्निहित जावास्क्रिप्ट सरणी (जो गतिशील रूप से आकार में है) के बारे में बात कर रहे हैं:

var x = [1, 2]; 
x.push(3); 
x[13] = 5; 
संबंधित मुद्दे