2016-11-28 20 views
5

नहीं मिला मैं इस उदाहरण के लिए इस मुद्दे को कम:निर्यात नहीं कर सकते आयात इंटरफ़ेस - निर्यात

test.model.ts

export class A { 
    a: number; 
} 

export interface B { 
    b: number; 
} 

test.component.ts

import { Component, Input } from '@angular/core'; 
import { A, B } from './test.model'; 

@Component({ 
    selector: 'test', 
    template: '<h1>test</h1>' 
}) 
export class TestComponent { 

    //This works fine 
    @Input() foo: A; 

    //Does NOT work - export 'B' was not found in './test.model' 
    @Input() bar: B; 

} 

जब मैं इंटरफ़ेस का उपयोग करना चाहता हूं तो मुझे निम्न चेतावनी मिलती है:

WARNING in ./src/app/.../test.component.ts 
21:76 export 'B' was not found in './test.model' 

हालांकि, एक वर्ग का उपयोग कर ठीक है। कोई संकेत?

अद्यतन: यह किसी भी तरह इस मुद्दे से संबंधित प्रतीत हो रहा है: https://github.com/webpack/webpack/issues/2977

+0

नहीं है यह पहले से ही यहाँ जवाब? http://stackoverflow.com/questions/30270084/why-the-limitation-on-exporting-an-interface-by-default-in-typescript –

+1

मुझे ऐसा नहीं लगता - यह समस्या डिफ़ॉल्ट निर्यात के साथ सौदा करती है जो मैं नहीं करता उपयोग नहीं करते हैं। फिर भी धन्यवाद। – user2878850

+1

आह क्षमा करें, ठीक से पढ़ा नहीं गया –

उत्तर

9

कल मैं यहाँ एक और सवाल मिल गया है और समाधान यह है कि यह एक अलग फाइल निर्यात इंटरफेस घोषित करने के लिए। प्रति फ़ाइल एक इंटरफेस के साथ, यह बिना किसी चेतावनी के मेरे लिए काम करता है।

+1

यह मेरे लिए काम करता है और यहां एक स्पष्टीकरण है कि क्यों: https://github.com/angular/angular-cli/issues/2034#issuecomment -302666897 – Chris

0

यह मेरे लिए काम किया:

@Input() bar: B | null; 

का उपयोग कोणीय 4.4.3 + टाइपप्रति 2.3.4

+0

यह काम करेगा यदि आप 'शून्य' को वैध इनपुट मान के रूप में अनुमति दे रहे हैं (अन्यथा यह प्रकार की सुरक्षा का उल्लंघन करेगा)। – MCattle

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