簡體   English   中英

“{}”類型的參數不可分配給 Angular 8 中的類型參數

[英]Argument of type '{}' is not assignable to parameter of type in Angular 8

我有一個處理錯誤的方法:

private handleError<T>(operation = 'operation', result?: T) {
    return (error: any): Observable<T> => {
      console.error(error);
      this.log(`${operation} failed: ${error.message}`);

      return of(result as T);
    };
  }

  private log(message: string) {
    console.log(message);
  }

我想在我的方法中使用它:

getMyStructure(): Observable<HttpResponse<StructureResponse>> {
    return this.http.get< StructureResponse >(
        localUrl).pipe(retry(3), catchError(this.handleError<StructureResponse>('getMyStructure', {})));
}

但最后一個{}向我拋出了一個錯誤。 StructureResponse是一個帶有一些字段的接口。 根據我的理解,我應該在那里放置一些(空的?) StructureResponse對象,但我不再確定。 你能幫我解決這個問題嗎?

這是結構響應:

interface SomeStructure {
  content: MyStructure[];
  page: number;
  size: number;
  totalElements: number;
  totalPages: number;
  last: boolean
}

添加 ? 到每個屬性。

interface SomeStructure {
  content?: MyStructure[];
  page?: number;
  size?: number;
  totalElements?: number;
  totalPages?: number;
  last?: boolean
}

使用Observable<StructureResponse>代替Observable<HttpResponse<StructureResponse>>如下。

getMyStructure(): Observable<StructureResponse> {
    return this.http.get< StructureResponse >(
        localUrl).pipe(retry(3), catchError(this.handleError<StructureResponse>('getMyStructure', {})));
}

如果您傳遞一個空對象,那么它分配給接口的唯一方法是接口中的屬性都是可選的(帶有?),否則您至少需要在對象中使用 null 或其他方式顯示您的屬性價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM