2017-03-20 13 views
6

मैं निम्नलिखित मामले में डुप्लिकेट टाइपप्रति प्रकार घोषणाओं से शिकायत है:टाइपप्रति दोहराया प्रकार घोषणाओं

मैं अपने आवेदन एक के लिए निम्नलिखित निर्भरता पेड़ मिल गया है:

A->@angular/http:2.3.1 
A->B->@angular/http:2.3.1 

दोनों ए और बी एनपीएम द्वारा प्रबंधित किया जाता है।

npm install 

चलाने के बाद फाइल सिस्टम इस तरह दिखता है:

A/node_modules/ 
    @angular/http 
    ... 
    B/node_modules 
    @angular/http 

समस्या यह है कि अब वहाँ के दो प्रकार घोषणाओं हैं प्रतीत हो रहा है @ कोणीय/http रिस्पांस, या हेडर तरह प्रकार के। और किसी भी तरह टाइपप्रति transpiler कि संभाल नहीं पा रहा है - निम्न त्रुटि संदेश में जिसके परिणामस्वरूप:

TS2453: प्रकार पैरामीटर 'टी' के लिए प्रकार तर्क के उपयोग से का पता नहीं लगाया जा सकता है। प्रकार तर्कों को स्पष्ट रूप से निर्दिष्ट करने पर विचार करें। टाइप तर्क उम्मीदवार 'प्रतिक्रिया' एक वैध प्रकार तर्क नहीं है क्योंकि यह उम्मीदवार 'प्रतिक्रिया' का एक सुपरटेप नहीं है। संपत्ति 'हेडर' के प्रकार असंगत हैं। 'हेडर' टाइप करने के लिए 'हेडर' टाइप करें असाइन करने योग्य नहीं है। प्रकारों में निजी संपत्ति 'mayBeSetNormalizedName' की अलग-अलग घोषणाएं होती हैं।

संदेश पढ़ना, मुझे लगता है कि इस बात का टाइपप्रति डुप्लिकेट प्रकार घोषणाओं मिलान करने में सक्षम नहीं किया जा रहा एक hickup है।

किसी को भी एक ही समस्या का अनुभव किया? उस समस्या को कैसे संभालें? ऐसे नाम टकराव कैसे संभालें?

+0

मुझे पता है कि यह संबंधित प्रश्न है: http://stackoverflow.com/questions/42412938/argument-of-type-connectionbackend-is-not-assignable-to-parameter-of-type-con। जवाब वास्तव में संतोषजनक नहीं है, क्योंकि मेरे मामले में मैं (बी नहीं करना चाहता) बस स्रोतों को बी से ए में ले जा सकता हूं। एक और तरीका होना चाहिए। – Robert

उत्तर

4

इस बीच मुझे पता चला है कि आप इस त्रुटि को ठीक कर सकते हैं स्पष्ट रूप से ए के उपयोग वर्ग के अंदर दिए गए प्रकारों को आयात करके। मेरे मामले में (सीपी। त्रुटि संदेश ऊपर), मुझे यह आवश्यक था:

import {Response, Headers} from '@angular/http'; 
+0

यह मेरे लिए भी काम करता है। धन्यवाद! –

+0

अच्छा, सत्यापन के लिए धन्यवाद! – Robert

1

मुझे एक ही समस्या थी। इसे हल करने के मूल रूप से दो तरीके हैं।

  1. इस बार का एक बहुत
  2. उपयोग as any as TheRequiredObject नीचे देखें लग सकता है परियोजना बी के एक UMD मॉड्यूल बनाओ।

Let मान लें कि आपके परियोजना ख में इस वर्ग मिल गया:

export class B{ 
    getSome(): Observable { 
     return this.http.get('some_url'); 
    } 
} 

और यह है कि क्या आप परियोजना एक में चाहते हैं:

export class A{ 
    getSomeFromB: Observable{ 
     return B.getSome() as any as Observable; 
    } 
} 
संबंधित मुद्दे