类型 'BaseResponse<IavailableParameters[]>' 缺少类型 'IavailableParameters[]' 的以下属性:长度、弹出等

Type 'BaseResponse<IavailableParameters[]>' is missing the following properties from type 'IavailableParameters[]': length, pop, etc

我正在调用我的 API 并返回一个对象列表。然后我将该数据分配给我的 DataService 中的 属性,这样我就可以跨组件使用它。

这是我组件中调用服务的代码:

  getAvailableParameters() {
     this.verificationService.getAvailableParameters(this.itemNumbers).subscribe((res => {
      this.dataService.availableParameters = res;
    }))}

这里是对 API

的调用
  getAvailableParameters(itemNumbers: string[]){
    return this.http.get<BaseResponse<IavailableParameters[]>>(`${this.baseUrl}api/verification/${itemNumbers}`)
  }

调用 getAvailableParameters 后,DataService 中应存储对象的 属性 如下:

export class DataService {
  public orderInfo: Iorder;
  public availableParameters: IavailableParameters[];
}

如你所见,从 API 返回的对象也被包裹在一个 BaseResponse 对象中(我认为这是问题所在但不知道如何解决),定义在这里:

import { Error } from './Error'

export interface BaseResponse<T> {
    isSuccessful: boolean,

    error: Error;

    results: T;
}

这正是我遇到的错误:

    ERROR in src/app/Components/verification-reply/verification-reply.component.ts(28,7): error TS2740: Type 'BaseResponse<IavailableParameters[]>' is missing the following properties from type 'IavailableParameters[]': length, pop, push, concat, and 26 more.

当我删除基本响应类型时,它工作正常,因为我假设它没有将其注册为数组或其他东西。当我返回的对象不是数组时,这种绑定到数据服务对象的方法工作正常。

我在这方面没有经验,需要一些帮助来解决这个错误。

When I remove the base response type, it works fine, as I'm assuming it doesn't register that as an array or something.

这是意料之中的,因为 BaseResponse<IavailableParameters[]> 不是数组。它是具有属性 isSuccessfulerrorresultsobject属性 results 是一个数组 IavailableParameters[].

您需要确保提供给 this.http.get 的任何类型与从请求返回的实际类型匹配。是IavailableParameters的数组吗?或具有 isSuccessfulerrorresults 的对象?

如果您有一个类型为 BaseResponse<IavailableParameters[]> 的变量 response,并且您正试图将其用作数组 IavailableParameters[],就像您发布的错误消息中那样,那么只需使用response.results 而不是整个响应对象。