title: Typescript duplicated type declarations
body: <p>I'm experiencing issues with duplicated Typescript type declarations in the following case: </p>
  
  <p>I've got the following dependency tree for my application A:</p>
  
  <pre><code>A-&gt;@angular/http:2.3.1
  A-&gt;B-&gt;@angular/http:2.3.1
  </code></pre>
  
  <p>Both A and B are managed by npm. After running </p>
  
  <pre><code>npm install
  </code></pre>
  
  <p>the filesystem looks like this:</p>
  
  <pre><code>A/node_modules/
    @angular/http
    ...
    B/node_modules
       @angular/http
  </code></pre>
  
  <p>The problem seems to be that now there are two type declarations of @angular/http types like <em>Response</em>, or <em>Headers</em>. And somehow the Typescript transpiler seems unable to handle that - resulting in the following error message: </p>
  
  <blockquote>
    <p>TS2453:The type argument for type parameter 'T' cannot be inferred
    from the usage. Consider specifying the type arguments explicitly.
    Type argument candidate 'Response' is not a valid type argument
    because it is not a supertype of candidate 'Response'. Types of
    property 'headers' are incompatible. Type 'Headers' is not assignable
    to type 'Headers'. Types have separate declarations of a private
    property 'mayBeSetNormalizedName'.</p>
  </blockquote>
  
  <p>Reading the message, I guess this is a hickup of Typescript not being able to match the duplicated type declarations.</p>
  
  <p>Anybody experienced the same issue? How to handle that problem? How to handle such name collisions? </p>