为什么 Angular 没有为 HttpClient.get(...) 选择正确的重载?
Why is Angular not choosing correct overload for HttpClient.get(...)?
我正在尝试将一些 HttpClient 调用(.get(...) 和 .post(...))抽象到 BaseService class 中,因为我必须如果我的服务不是从基础 class.
继承的,则重复代码 headers 和凭据
在执行此操作时,出于某种原因,我的代码未在获取时选择通用重载。
以下方法调用成功选择了正确的 HttpClient.get(...) 重载:
但是,以下是选择不同的重载,我不知道如何解决它:
这是因为我错误地声明了私有选项字段吗?我无法在 API 文档中找到一种 better/correct 声明方式,以便成功选择正确的重载。有人可以帮我让我的代码为 HttpClient.get(...) 选择正确的(通用 Observable<T>
)重载吗?
这是因为您正在声明类型为 any
的选项。
通过这样做,编译器对options
的interface/members一无所知,尽管事实上你用一个对象实例化了它的值2 个属性。
重构为:
export class Foo {
private options = {headers: {...}, withCredentials: true};
....
}
现在编译器可以推断 options
的类型,而不是静态地读取它。
我正在尝试将一些 HttpClient 调用(.get(...) 和 .post(...))抽象到 BaseService class 中,因为我必须如果我的服务不是从基础 class.
继承的,则重复代码 headers 和凭据在执行此操作时,出于某种原因,我的代码未在获取时选择通用重载。
以下方法调用成功选择了正确的 HttpClient.get(...) 重载:
但是,以下是选择不同的重载,我不知道如何解决它:
这是因为我错误地声明了私有选项字段吗?我无法在 API 文档中找到一种 better/correct 声明方式,以便成功选择正确的重载。有人可以帮我让我的代码为 HttpClient.get(...) 选择正确的(通用 Observable<T>
)重载吗?
这是因为您正在声明类型为 any
的选项。
通过这样做,编译器对options
的interface/members一无所知,尽管事实上你用一个对象实例化了它的值2 个属性。
重构为:
export class Foo {
private options = {headers: {...}, withCredentials: true};
....
}
现在编译器可以推断 options
的类型,而不是静态地读取它。