angular - Angular Error_for_TS2554 预期 0 个参数,但得到 3 个
问题描述
为所有调用创建了一个通用的 httpServie。
export class HttpApiService {
constructor( private httpClient: HttpClient) {}
public getData<T>(url: string, headers?: HttpHeaders): Observable<T> | Observable<any> {
this.customReqOptions = this.getHeaders(headers);
return this.httpClient.get(`${this.endPoint}${url}`, { headers: this.customReqOptions});
}
}
从 UserService 调用它
export class UserService {
constructor(private httpApi: HttpApiService) {
}
public getUsers(): Observable<any>{
return this.httpApi.getData('users')
.pipe(
tap((res) => {console.log('res,',res)}),
publishReplay(1),
refCount()
);
}
}
管道 () 一个给出错误 TS2554: Expected 0 arguments, but got 3.
为参考创建了一个代码:https ://stackblitz.com/edit/anglearn
我错过了什么?虽然使用了最新版本的@angular: v8, rxjs: 6.4 使用 ngcli。
解决方案
像这样改变你的getData
方法:
public getData<T>(url: string, headers?: HttpHeaders): Observable<T> {
this.customReqOptions = this.getHeaders(headers);
return this.httpClient.get<T>(`${this.endPoint}${url}`, { headers: this.customReqOptions});
}
由于某些原因,TS 编译器不喜欢通用方法 return Observable<any>
。注意 - 没有运行时错误。
查看工作中的 stackblitz - https://stackblitz.com/edit/anglearn-tezbyk?file=src/app/common/httpApi.service.ts
推荐阅读
- java - 尝试为 Minesweeper 创建 JButton 网格,但直到 MouseOver 网格才会显示
- javascript - JS:JSON数组删除具有重复主键的条目
- assembly - XNOR 两个 8 位块中的 64 位寄存器
- azure-data-explorer - 库斯托 | Azure 数据资源管理器 | extractjson() 什么都不返回
- javascript - 如何在 JavaScript 中递归遍历通用树(不是 BST)?
- python - 使用opencv进行阈值处理后的文本模糊
- c - C 编译器行为不匹配
- azure - 为什么我的构建管道用星号替换特定值?- Azure DevOps
- plot - LightGBM 绘图树与特征重要性不匹配
- activemq-artemis - 直接从 ActiveMQ Artemis 副本消费