类型 '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[]>
不是数组。它是具有属性 isSuccessful
、error
和 results
的 object
。 属性 results
是一个数组 IavailableParameters[]
.
您需要确保提供给 this.http.get
的任何类型与从请求返回的实际类型匹配。是IavailableParameters
的数组吗?或具有 isSuccessful
、error
和 results
的对象?
如果您有一个类型为 BaseResponse<IavailableParameters[]>
的变量 response
,并且您正试图将其用作数组 IavailableParameters[]
,就像您发布的错误消息中那样,那么只需使用response.results
而不是整个响应对象。
我正在调用我的 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[]>
不是数组。它是具有属性 isSuccessful
、error
和 results
的 object
。 属性 results
是一个数组 IavailableParameters[]
.
您需要确保提供给 this.http.get
的任何类型与从请求返回的实际类型匹配。是IavailableParameters
的数组吗?或具有 isSuccessful
、error
和 results
的对象?
如果您有一个类型为 BaseResponse<IavailableParameters[]>
的变量 response
,并且您正试图将其用作数组 IavailableParameters[]
,就像您发布的错误消息中那样,那么只需使用response.results
而不是整个响应对象。