在以下情况下,我遇到了重复的Typescript类型声明问题:
我的应用程序A:
有以下依赖关系树A->@angular/http:2.3.1
A->B->@angular/http:2.3.1
A和B都由npm管理。运行后
npm install
文件系统如下所示:
A/node_modules/
@angular/http
...
B/node_modules
@angular/http
问题似乎是现在有两种@ angular / http类型的类型声明,例如 Response 或 Headers 。并且不知何故,Typescript转换器似乎无法处理 - 导致以下错误消息:
TS2453:类型参数的类型参数' T'无法推断 从用法。考虑明确指定类型参数。 输入参数候选者'响应'不是有效的类型参数 因为它不是候选人的超级类型' Response'。种类 财产'标题'是不相容的。输入'标题'不可分配 输入' Headers'。类型具有私有的单独声明 property' mayBeSetNormalizedName'。
阅读消息,我想这是一个不能匹配重复类型声明的Typescript的hickup。
有人遇到过同样的问题吗?如何处理这个问题?如何处理这样的名称冲突?
答案 0 :(得分:4)
同时我发现你可以通过在A的using类中显式导入相应类型来修复这个错误。在我的情况下(上面的cp。错误信息),我需要:
import {Response, Headers} from '@angular/http';
答案 1 :(得分:1)
我遇到了同样的问题。基本上有两种解决方法。
as any as TheRequiredObject
见下文。假设你在项目b中得到了这个类:
export class B{
getSome(): Observable {
return this.http.get('some_url');
}
}
这就是你想要的项目a:
export class A{
getSomeFromB: Observable{
return B.getSome() as any as Observable;
}
}