2013-07-07 10 views
11

सूचकांक हस्ताक्षर पहचानकर्ता क्या करता है?टाइपस्क्रिप्ट में, इंडेक्स हस्ताक्षर पहचानकर्ता क्या है?

interface IIndex { 
    [something: string]: any; 
} 

कोई भी "कुछ" फिर से उपयोग करेगा?

interface IIndex { 
    [string]: any; 
} 
+2

मुझे लगता है कि "कुछ" दस्तावेज़ केवल इसके प्रकार के बजाय शब्दकोश को खोजने के लिए वास्तविक कुंजी दस्तावेज करता है। हालांकि, "कुंजी" का एक डिफ़ॉल्ट नाम शायद 99% स्थितियों में काम करना चाहिए ... कुछ मामले हैं (उदा। '' [StyleName: string]: string'') जहां एक कस्टम नाम अधिक दस्तावेज उत्पन्न कर सकता है। –

उत्तर

7

मेरा अनुमान होगा कि इस स्थिरता और जावास्क्रिप्ट से निकटता के कारणों के लिए है:

या दूसरे शब्दों में, क्यों सिर्फ सिंटैक्स नहीं है।

वैसे ही जैसे यह आपके विधि तर्क नाम के लिए आम है (इंटरफेस में भी), टीएस में तरीकों, कंस्ट्रक्टर्स, कार्यों और indexers के लिए सभी तर्कों प्रारूप name: type या name (name: any अर्थ) का होना चाहिए। (कहानी का संस्करण सरलीकृत लेकिन मुझे यकीन है कि तुम मुझे मिल हूँ)

के बाद से नाम और प्रकार टाइपप्रति में विभिन्न नामस्थान में रहते हैं, प्रपत्र string का एक तर्क अस्पष्ट होगा। याद रखें कि टाइपस्क्रिप्ट का लक्ष्य जावास्क्रिप्ट के करीब रहने के लिए है, इसलिए उपरोक्त को string के तर्क के रूप में व्याख्या करना अस्वीकार्य होगा, और यह वास्तव में string: any के बराबर है।

इसके अलावा, indexers एक अपवाद हो सकता है, जबकि, क्योंकि वे केवल प्रकार string या number का हो सकता है, यह हमेशा मामला किया गया है (टीएस 0.8 any अनुमति), इसलिए एक और कारण 0.9 के लिए प्रवास की सुविधा के लिए हो सकता है।

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