2017-09-23 10 views
5

यदि मेरे पास type foo = Array<{ name: string; test: number; }> टाइप है, तो इस मामले में, इंटरफ़ेस में सरणी के मानों का प्रकार प्राप्त करना संभव होगा। मुझे पता है कि कुंजी प्राप्त करने के लिए keyof है, क्या मूल्यों के लिए कुछ समान है?सरणी प्रकार मानों का प्रकार कैसे प्राप्त करें?

+0

'प्रकार foo = सरणी ' - इस सवाल यह है कि प्राप्त करने के लिए "पूछ है टी ", या कुछ और? – user2864740

उत्तर

4

आप कैसे { name: string; test: number; } प्रकार को निकालने के लिए करने के लिए देख रहे हैं, तो आप बस उर्फ ​​करने के लिए "आइटम सूचकांक पर" बना सकते हैं:

type Foo = Array<{ name: string; test: number; }>; 
type FooItem = Foo[0]; 
1

Aleksey उत्तर के बावजूद, यह जानना उपयोगी हो सकता है कि अगर उस सामान्य प्रकार का उदाहरण उस प्रकार के कम से कम एक सदस्य को उजागर करता है जिसे आप निकालना चाहते हैं, तो आप उस सदस्य के typeofquery the type का उपयोग कर सकते हैं।

एक सामान्य Array प्रकार के लिए किसी भी सरणी आइटम से पूछे जा सकता है: enter image description here

ध्यान दें कि पंक्ति 27 केवल डिजाइन समय में मौजूद है ताकि किसी भी त्रुटि उत्पन्न नहीं करेगा, भले ही arr खाली या कार्यावधि में अनिर्धारित रहता है।

+0

* वर्तमान में एक सामान्य प्रकार के परम निकालने का कोई तरीका नहीं है। * ठीक है, एक सरणी के लिए, जेनेरिक प्रकार किसी भी इंडेक्स में सदस्य के प्रकार के समान होता है, जिसे आप ** ** निकालने के लिए " अनुक्रमित एक्सेस ऑपरेटर "। –

+0

@torazaburo उस सरणी सदस्य के प्रकार से पूछताछ करके आप सदस्य प्रकार को उस सरणी प्रकार के उदाहरण से निकाल रहे हैं, जेनेरिक सरणी प्रकार से नहीं जो टाइपस्क्रिप्ट AFAIK के वर्तमान संस्करण में संभव नहीं है। – cvsguimaraes

+0

मुझे लगता है कि आप रन-टाइम 'टाइपोफ' परिणाम, और सरणी तत्व के टाइपस्क्रिप्ट प्रकार के बीच उलझन में हैं। –

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