2015-01-10 15 views
7

मैं अपने TypScript में निम्न प्रकार उपयोग कर रहा हूँ के संदर्भ उप प्रकार:टाइपप्रति: प्रकार परिभाषा (इंटरफेस)

interface ExerciseData { 
    id : number; 
    name : string; 
    vocabulary : { 
     from : string; 
     to : string; 
    }[]; 
} 

अब मैं एक चर विशेषता vocabulary रूप में एक ही प्रकार का है कि बनाना चाहते हैं, निम्नलिखित का प्रयास कर रहा है:

var vocabs : ExerciseData.vocabulary[]; 

लेकिन यह काम नहीं कर रहा है। क्या किसी प्रकार से उप प्रकार का संदर्भ देना संभव है? या मुझे ऐसा कुछ करना होगा?

interface ExerciseData { 
    id : number; 
    name : string; 
    vocabulary : Vocabulary[]; 
} 

interface Vocabulary { 
     from : string; 
     to : string; 
} 

var vocabs : Vocabulary[]; 

संकेतों के लिए बहुत बहुत धन्यवाद।

+0

आप सही हैं। आपको अंतिम कोड ब्लॉक में जो करना चाहिए वह करना चाहिए। –

+0

धन्यवाद @WayneEllery - तो आप कहेंगे कि यह निश्चित रूप से संभव नहीं है? –

+0

हाँ। आपको वास्तव में अपने प्रकारों को वैसे भी घोषित करना चाहिए। –

उत्तर

2

बिल्कुल वही नहीं जो आप चाहते हैं लेकिन आप टाइपफ़ोर्ड कीवर्ड के साथ इस पर हैक कर सकते हैं, लेकिन केवल तभी यदि आपके पास एक ऐसा वैर है जो आपके इंटरफ़ेस प्रकार के रूप में घोषित किया गया है। देखने प्रकार का उपयोग कर निम्नलिखित नोट मुझे लगता है कि क्या आप अपने पिछले codeblock में किया था एक बहुत बेहतर है :)

interface ExerciseData { 
    id : number; 
    name : string; 
    vocabulary : { 
     from : string; 
     to : string; 
    }[]; 
} 
var x: ExerciseData; 
var vocabs : typeof x.vocabulary[]; 
+0

हम्म, यह वास्तव में एक काफी रोचक संभावना है - हालांकि मैं जो कुछ भी ढूंढ रहा था वह काफी नहीं था। इसका जिक्र करने के लिए धन्यवाद। –

4

टाइपप्रति 2.1 जब से तुम कर सकते हैं:

let vocabs: ExerciseData['vocabulary'][]; 
+0

इस तरह के कामकाज करने का कोई तरीका? जेएस व्यायाम डेटा की तरह [xxx] [] – xperiments

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