2017-01-18 6 views
11

में त्रुटि मेरे पास बड़ी मात्रा में जेएस कोड है जो कई असामान्य सरणी का उपयोग करता है जो वस्तुओं तक बहुत तेजी से पहुंचने की अनुमति देता है। तो मैंने इस कोड को बंद करने की कोशिश की और असफल रहा। तो स्पष्ट रूप से मैं टीएस को अभी तक पर्याप्त समझ में नहीं आता।मुझे "टाइप 'स्ट्रिंग क्यों मिल रहा है' इंडेक्स प्रकार के रूप में उपयोग नहीं किया जा सकता है" टाइपस्क्रिप्ट

मैंने इस प्रश्न का उत्तर देने के लिए शिकार किया है और एक इंटरफ़ेस आदि बनाने के लिए सुझाव प्राप्त किए हैं ... लेकिन यह ट्रैक से थोड़ा सा लगता है।

तो स्पष्ट प्रतीयमान की कोशिश की:

class Foo { 
    allObjects: MyObject[]; 
    constructor() { 
    this.allObjects = []; 
    } 
} 

जहां MyObject - सरल बनाया:

class MyObject { 
    _id: String; 
    public getId(): String { 
     return this._id; 
    } 
} 

और मुझे लगता है कि विश्वास करेगा:

myObjectInstance: MyObject; 
fooInstance.allObjects[myObjectInstance.getId()] = myObjectInstance; 

ठीक होगा ... अभी तक मैं सुंदर टीएस 2342 त्रुटि देखें (एक अनुक्रमणिका अभिव्यक्ति तर्क प्रकार 'स्ट्रिंग', 'संख्या', या 'कोई' होना चाहिए) जो कोई संवेदना नहीं देता getId() एक 'स्ट्रिंग' है के बाद से मेरे लिए ई। ऐसा लगता है कि यह मुश्किल नहीं होना चाहिए। तो आपकी मदद की बहुत सराहना की जाएगी ...

+0

की संभावित डुप्लिकेट [टाइपप्रति: स्ट्रिंग और स्ट्रिंग के बीच का अंतर] प्रकार के लिए (http://stackoverflow.com/questions/14727044/ टाइपस्क्रिप्ट-अंतर-स्ट्रिंग-एंड-स्ट्रिंग के बीच) –

+5

'स्ट्रिंग'' स्ट्रिंग 'से अलग है, यानी,' _id: string; 'काम करना चाहिए। आपको केवल 'स्ट्रिंग' की आवश्यकता होती है जब आपको इसके साथ 'नया' उपयोग करना होता है, यानी, लगभग कभी नहीं। – artem

+0

वैसे, शब्द "एसोसिएटिव सरणी" का प्रयोग न तो जावास्क्रिप्ट और न ही टाइपस्क्रिप्ट में किया जाता है। –

उत्तर

41

उपयोग लोअरकेस string की MyObject._id

+1

बहुत बहुत धन्यवाद ... मैंने अभी यह देखा है .... 'बेवकूफ बहुत शक्तिशाली है' :-) – JoelParke

+3

मेरे मामले में लोअरकेस 'संख्या' के लिए चला जाता है। – Leo

+1

मैं इस पर विश्वास नहीं कर सकता .... –

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

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