2016-04-25 13 views
50

जहां तक ​​मुझे पता है कि संपत्ति के प्रकार को दो तरीकों से परिभाषित किया जा सकता है जब यह एक ऐरे है।ऐरे <Type> वीएस प्रकार [] टाइपस्क्रिप्ट

property_name: type 

जहां प्रकार हो सकता है या तो

Array<string>, ,Array<MyType>, etc. (e.g. let prop1: Array<string>) 

और

string[], MyType[], etc. (e.g. let prop1: string[]) 

अंतर दो मामलों के बीच क्या है? या मैं कुछ के रूप में डुप्लिकेट के रूप में चिह्नित गलतफहमी रहा हूँ (शायद कुछ के बारे में <> कास्टिंग में प्रयोग किया जाता?)

सवाल के बाद से संपादित करें, मैं कर रहा हूँ के बारे में पता वहाँ के बारे में कोई [] लेकिन अभी भी मैं एक नज़र था अन्य सवाल यह है कि इसे मेरे लिए पोस्ट करने और इससे पहले कि यह प्रकार के बारे में अधिक था 'कोई भी' की तुलना में अलग [] वी.एस. <> मैंने पूछा

+3

[प्रतिकृति ऐरे बनाम किसी भी \ [\]] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/15860715/typescript-array-vs-any) –

+1

वे व्यावहारिक रूप से समान संरचनाएं हैं, और प्रभावी रूप से समान हैं रनटाइम पर ऑब्जेक्ट्स। [प्रतिबिंबित-मेटाडाटा] (https://github.com/rbuckton/ReflectDecorators) दोनों को उनके निर्माता के रूप में 'ऐरे' ऑब्जेक्ट के रूप में भी व्यवहार करेंगे। उपर्युक्त लिंक देखें। –

+2

@NitzanTomer वह प्रश्न पुराना है - 'ऐरे ' तब मौजूद नहीं था। –

उत्तर

34

कोई फर्क नहीं पड़ता। यह लिखने के लिए बराबर है:

function loggingIdentity<T>(arg: T[]): T[] { 
    console.log(arg.length); // Array has a .length, so no more error 
    return arg; 
} 

या:

function loggingIdentity<T>(arg: Array<T>): Array<T> { 
    console.log(arg.length); // Array has a .length, so no more error 
    return arg; 
} 

स्रोत: the Handbook

+0

उत्तर के लिए धन्यवाद। क्या आप कृपया स्पष्टीकरण दे सकते हैं कि लॉगिंग में वास्तव में क्या है 0D? – dragonmnl

+0

@dragonmnl, यह एक सामान्य प्रकार है। [हैंडबुक] (http://www.typescriptlang.org/docs/handbook/generics.html) में बस "जेनरिक्स की हैलो वर्ल्ड" अनुभाग पढ़ें। – Paleo

+0

मुझे लगता है कि हम सभी सहमत हैं कि कोई कार्यात्मक अंतर नहीं है, लेकिन क्या पसंदीदा शैली क्या है इस पर कोई सिफारिश है? – chrismarx

-1
foo: Array 

मतलब है कि यह एक सादा सरणी है, यह के सदस्यों

के लिए एक अंतर्निहित any प्रकार के साथ
foo: string[] 

का अर्थ यह है कि यह तारों की एक सरणी है, यानी टाइपस्क्रिप्ट मानसिक हो जाएगा यदि आप उस सरणी में तारों के अलावा किसी और चीज को धक्का देने का प्रयास करते हैं।

+3

सवाल यह था कि ऐरे बनाम स्ट्रिंग [], ऐरे बनाम स्ट्रिंग नहीं []; –

+0

यह अजीब बात है, टाइपस्क्रिप्ट को दिमाग में प्रतीत नहीं होता है जब मैं 'foo: string [] ' – JLewkovich

+1

के रूप में परिभाषित पैरामीटर वाले किसी विधि को संख्याओं की सरणी पास करता हूं यदि आप संख्याओं की सरणी पास करते हैं, तो fn ([1,2,3]), तो यह दिमाग में है। यदि आप एक चर पारित करते हैं और प्रकार स्पष्ट नहीं है, तो एक = []; ए = [1,2,3]; एफएन (ए), तो यह कोई फर्क नहीं पड़ता क्योंकि कोई भी टाइप है [] –

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