2016-12-14 5 views
14

टाइपस्क्रिप्ट प्रकारों के आस-पास ज्ञान की कमी का प्रदर्शन करने के जोखिम पर - मेरे पास निम्न प्रश्न है।टाइपस्क्रिप्ट - निश्चित लंबाई ऐरे <length> प्रकार?

जब आप इस तरह एक सरणी के लिए एक प्रकार घोषणा कर ...

position: Array<number>; 

... यह आप मनमाने ढंग से लंबाई के साथ एक सरणी बनाने देंगे। हालांकि यदि आप x, y, z घटकों के लिए विशिष्ट लंबाई i.e. 3 वाले संख्या वाले सरणी चाहते हैं, तो आप एक निश्चित लंबाई सरणी के साथ एक प्रकार बना सकते हैं, ऐसा कुछ?

position: Array<3> 

किसी भी मदद या स्पष्टीकरण की सराहना की! ,

let arr = new Array<number>(3); 
console.log(arr); // [undefined × 3] 

बहरहाल, यह सिर्फ प्रारंभिक आकार है बदल रहा है उस पर कोई प्रतिबंध नहीं है::

उत्तर

29

जावास्क्रिप्ट सरणी एक निर्माता है कि सरणी की लंबाई को स्वीकार करता है

arr.push(5); 
console.log(arr); // [undefined × 3, 5] 

टाइपप्रति है tuple types जो आपको एक विशिष्ट लंबाई और प्रकार के साथ एक सरणी परिभाषित करने देता है:

let arr: [number, number, number]; 

arr = [1, 2, 3]; // ok 
arr = [1, 2]; // Type '[number, number]' is not assignable to type '[number, number, number]' 
arr = [1, 2, "3"]; // Type '[number, number, string]' is not assignable to type '[number, number, number]' 
+0

ब्रिलि चींटी उत्तर - पूरी तरह से काम करता है – henryJack

+7

ट्यूपल प्रकार केवल प्रारंभिक आकार की जांच करता है, ताकि आप प्रारंभ होने के बाद भी अपने 'arr' पर असीमित मात्रा "संख्या" को दबा सकें। – benjaminz

+0

सच है, यह अभी भी रनटाइम पर जावास्क्रिप्ट है जो उस बिंदु पर "कुछ भी चला जाता है"। कम से कम टाइपस्क्रिप्ट ट्रांसलेटर इसे कम से कम स्रोत कोड में लागू करेगा – henryJack

संबंधित मुद्दे