Я использую HttpClient для извлечения записей из API JSON через службу. Я создал класс, который представляет объект, возвращенный из API идентично, однако я получаю следующую ошибку:
Type 'any[] | ReceiptResponse' is not assignable to type 'ReceiptResponse'
мой сервис имеет следующую функцию:
getPagedReceipts(
filter = '',
sortOrder = 'ASC',
sortColumn = 'receipt.id',
pageNumber = 0,
pageSize = 5,
): Observable<ReceiptResponse> {
return this.http.get<ReceiptResponse>(this.baseUrl, {
params: new HttpParams()
.set('filter', filter)
.set('sortOrder', sortOrder)
.set('sortColumn', sortColumn)
.set('pageNumber', pageNumber.toString())
.set('pageSize', pageSize.toString())
}).pipe(
catchError(this.handleError)
);
}
Я вызываю это в следующей функции.
public receiptsResponse: ReceiptResponse;
this.receiptService.getPagedReceipts(filter, sortOrder, sortColumn,
pageIndex, pageSize).pipe(
catchError(() => of([])),
finalize(() => this.loadingSubject.next(false))
).subscribe(receiptsResponse => {
this.receiptsResponse = receiptsResponse; <-- this is location of the error.
this.receipts = this.receiptsResponse.items;
console.log(this.receiptsResponse);
this.receiptsSubject.next(this.receipts);
});
Это ReceiptResponse:
import {Receipt} from './receipt';
export class ReceiptResponse {
public itemCount: number;
public items: Receipt[];
public next: string;
public pageCount: number;
public previous: string;
public totalItems: number;
constructor(
itemCount?: number,
items?: Receipt[],
next?: string,
pageCount?: number,
previous?: string,
totalItems?: number
) {
this.itemCount = itemCount;
this.items = items;
this.pageCount = pageCount;
this.next = next;
this.previous = previous;
this.totalItems = totalItems;
}
}