2015-11-05 13 views
8

टाइप करने के लिए असाइन करने योग्य नहीं है मैं टाइपस्क्रिप्ट के साथ ES2015 मॉड्यूल सिंटैक्स का उपयोग करके कुछ कक्षाएं लिखने की कोशिश कर रहा हूं। प्रत्येक वर्ग .d.ts फ़ाइल में एक इंटरफ़ेस लागू करता है।टाइपस्क्रिप्ट टीएस 2322: 'टाइपफू फू' टाइप करें 'IFoo'

यहां समस्या का एक MWE है।

एक .d.ts फ़ाइल में मेरे पास है:

interface IBar { 
    foo: IFoo; 
    // ... 
} 

interface IFoo { 
    someFunction(): void; 
    // ... 
} 

मेरे निर्यात है:

// file: foo.ts 
export default class Foo implements IFoo { 
    someFunction(): void {} 
    // ... 
} 
// no errors yet. 

और मेरी आयात है:

import Foo from "./foo"; 

export class Bar implements IBar { 
    foo: IFoo = Foo; 
} 

यहाँ त्रुटि है:

error TS2322: Type 'typeof Foo' is not assignable to type 'IFoo'. 
Property 'someFunction' is missing in type 'typeof Foo'. 

कोई विचार यहाँ?

उत्तर

11

जब आप कहते हैं कि foo: IFoo = Foo; आप वर्ग IFoo करने के लिएFoo बताए जाते हैं। हालांकि इंटरफेस IFoo उस वर्ग के उदाहरण द्वारा लागू किया गया है। आपको करने की ज़रूरत है:

foo: IFoo = new Foo; 
+2

रूकी गलती, सोचा कि मैं टाइपस्क्रिप्ट के साथ कुछ गलत कर रहा था, जब यह वास्तविक जेएस के साथ एक मुद्दा था ... धन्यवाद। – azz

+0

चीयर्स। कृपया – basarat

+0

उत्तर के रूप में चिह्नित करें। तो आप स्वीकार करने से पहले 10 मिनट इंतजार कर सकते हैं। – azz

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