首页 > 解决方案 > 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

即使在 VS 代码中运行时也会遇到同样的问题 在此处输入图像描述

我错过了什么?虽然使用了最新版本的@angular: v8, rxjs: 6.4 使用 ngcli。

标签: angularrxjs6angular8

解决方案


像这样改变你的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


推荐阅读