为什么Angular没有为HttpClient.get(...)选择正确的重载?

时间:2018-02-22 19:00:44

标签: angular typescript angular-httpclient

我正在尝试将一些HttpClient调用(.get(...)和.post(...))抽象到BaseService类中,因为我必须重复代码,例如标题和凭据,如果我的服务不要从基类继承。

在执行此操作时,由于某种原因,我的代码没有在get上选择泛型重载。

以下方法调用成功选择了正确的HttpClient.get(...)重载:

enter image description here

但是,以下是选择不同的重载,我不知道如何解决它:

enter image description here

这是因为我正在声明私人选项字段错误吗?我在API文档中找不到更好/更正的方式来声明它,以便成功选择正确的重载。有人可以帮助我让我的代码为HttpClient.get(...)选择正确的(通用Observable<T>)重载吗?

1 个答案:

答案 0 :(得分:4)

这是因为您要声明类型为any的选项。

通过这样做,编译器知道没有关于options的接口/成员,尽管您使用由2个属性组成的对象实例化其值。

重构:

export class Foo {
   private options = {headers: {...}, withCredentials: true};
   ....
}

现在编译器可以推断 options的类型,而不是静态读取它。