Angular 请求带有元数据的类型化响应数据

Angular requesting typed response data with metadata

来自我后端的所有响应(不包括错误)return 格式如下:

{
   "data": [
      ...
   ]
   "meta": { //Always same structure
      "itemsPerPage": 20
      "offset": 0
      "pages": 6554
      "total": 131071
   }
}

在angular中, 接口:

export interface user {
   name: string
   id: number
}

export interface meta {
   itemsPerPage: number
   offset: number
   pages: number
   total: number
}

提出请求

this.http.get<user[]>(...).subscribe(data => {
   this.users = data.data;
   this.meta = data.meta
})

如何在此处设置正确的响应类型(我期望 属性 类型为 user[] 的数据和类型为 meta)?

您可以在此处使用泛型,以便重用接口。

export interface IDataResponse<T> {
    data: Array<T>;
    meta: {
       itemsPerPage: number;
       offset: number;
       pages: number;
       total: number;
    };
}

现在在您的通话中指定。

this.http.get<IDataResponse<user>>('url/here')
  .subscribe(response => /* do something with the response */);