首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计回应的打字本模型?

如何设计回应的打字本模型?
EN

Stack Overflow用户
提问于 2018-09-21 12:15:03
回答 3查看 1.8K关注 0票数 4

我如何设计我的模型,在打字稿,我得到了以下的反应?

代码语言:javascript
复制
{
    "data":[
            {
                "name": "XYZ",
                "id": "1"
            },
            {
                "name" :"Abc",
                "id": "2"
            }
        ]
}

我试过的是:

代码语言:javascript
复制
export class responseModel<T>{
    data:T;
}

export class model{
    name:string;
    id: number;
}

你的建议是什么?所有数据都将作为{ data: THE_DATA_OBJECT }的一部分提供。

代码语言:javascript
复制
{
    data: []
}

getInfo(): Observable<responseModel<model[]>> {
    // API HTTP Call
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-21 12:27:03

https://stackoverflow.com/a/45405240/5695162,因为从HTTP产生的反序列化JSON值永远不是类的实例

@Angular StyleGuide 考虑为数据模型使用接口。

代码语言:javascript
复制
export interface Model{
        id: number;
        name: string;
    }

export interface ResponseModel{
         data:Array<Model>;
  }

getInfo(): Observable<responseModel>{
return this._httpClient.get<resposneModel>('url);
}
票数 7
EN

Stack Overflow用户

发布于 2018-09-21 12:21:06

data应该具有model[]类型,而整个响应类型为responseModel

代码语言:javascript
复制
export class responseModel{
   data:model[];
}
export class model{
  name:string;
  id: number;
}

getInfo(): Observable<responseModel> {
// API HTTP Call
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-21 12:38:56

我认为这是一个主观的问题,所以我会分享我的经验,当我有一个类似的情况。

我使用{ data: THE_DATA_OBJECT }的项目响应的所有后端端点。我认为设计我的所有响应模型都需要一个“数据”前缀,所以我基本上在api服务中打开了“数据”前缀,而不是这样做。

如下所示:

代码语言:javascript
复制
genericHttpCall<T>(path: string, method: string, params: any}: Observable<T> {
  return this.httpClient.request().pipe(map(response => response.data));
}

因此,这基本上可以避免做class responseModel<T>,这样我就可以自由地设计真正的模型,而不是让后端影响我的模型结构。

此外,对于响应模型,我总是使用interface而不是class,因为它们是不涉及构造函数或方法的普通数据模型。除非您想使模型适用于您的业务逻辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52443544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档