打字稿重复类型声明

Rob*_*ert 8 javascript npm typescript angular

在以下情况下,我遇到了重复的Typescript类型声明的问题:

我的应用程序A有以下依赖树:

A->@angular/http:2.3.1
A->B->@angular/http:2.3.1
Run Code Online (Sandbox Code Playgroud)

A和B都由npm管理.跑完之后

npm install
Run Code Online (Sandbox Code Playgroud)

文件系统如下所示:

A/node_modules/
  @angular/http
  ...
  B/node_modules
     @angular/http
Run Code Online (Sandbox Code Playgroud)

问题似乎是现在有两种@ angular/http类型的类型声明,如ResponseHeaders.并且不知何故,Typescript转换器似乎无法处理 - 导致以下错误消息:

TS2453:无法根据用法推断类型参数"T"的类型参数.考虑明确指定类型参数.类型参数候选"响应"不是有效的类型参数,因为它不是候选"响应"的超类型.属性"标题"的类型不兼容."标题"类型不能指定为"标题"类型.类型具有私有属性'mayBeSetNormalizedName'的单独声明.

阅读消息,我想这是一个不能匹配重复类型声明的Typescript的hickup.

有谁遇到过同样的问题?如何处理这个问题?如何处理这样的名称冲突?

Rob*_*ert 4

同时,我发现您可以通过在 A 的 using 类中显式导入相应类型来修复此错误。在我的情况下(上面的错误消息),我需要:

import {Response, Headers} from '@angular/http';
Run Code Online (Sandbox Code Playgroud)