为了账号安全,请及时绑定邮箱和手机立即绑定

类型“BaseResponse<IavailableParameters[]>”缺少类型

类型“BaseResponse<IavailableParameters[]>”缺少类型

蓝山帝景 2023-07-06 11:10:32
我正在对 API 进行 get 调用并返回对象列表。然后,我将该数据分配给 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}`)  }以下是 DataService 中应在调用 getAvailableParameters 后存储对象的属性: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.当我删除基本响应类型时,它工作正常,因为我假设它没有将其注册为数组或其他东西。当我返回的对象不是数组时,这种与数据服务对象的绑定方法工作正常。我在这个主题上缺乏经验,可以使用一些帮助来解决这个错误。
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

当我删除基本响应类型时,它工作正常,因为我假设它没有将其注册为数组或其他东西。

这是可以预料的,因为它BaseResponse<IavailableParameters[]>不是一个数组。它是一个object具有属性isSuccessfulerror、 和 的results。该属性 results是一个数组IavailableParameters[]

您需要确保您提供的任何类型与this.http.get请求返回的实际类型相匹配。它是一个数组吗IavailableParametersisSuccessful或者带有、error、 和 的对象results

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


查看完整回答
反对 回复 2023-07-06
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信