typescript - 将json转换为接口

时间:2018-05-17 12:08:32

标签: json typescript interface

我有这样的界面:

export default interface IProject extends{
    Id?:number;
    name?:string;
    description?:string;
}

和我从服务器获取数据时,json文件包含更多这样的属性:

{
    id,
    name,
    description,
    url,
    startDate,
    finishDate
}

但我只需要id,name和description字段。我试过这个:

response.data.map((p: any) => p as IProject);

但该对象包含不必要的数据,如url,startdate和finishDate 我该如何正确映射它们? 我知道我们可以像这样映射它们:

response.data.map((p: any) => {
    return {id:p.id,name:p.name,description:p.description}
});

但还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我建议您执行您正在执行的操作,但另外还要为服务器响应添加一些类型。这样你就可以获得映射函数的智能感知。

interface IProject {
  id?: number;
  name?: string;
  description?: string;
}

interface IProjectResponse {
  id?: number;
  name?: string;
  description?: string;
  url?: string;
  startDate?: string;
  finishDate?: string;
}

const mapResponse = (response: IProjectResponse[]) => response.data.map((p) => ({
  id: p.id,
  name:p.name,
  description: p.description,
}));

const response = await fetch(/* .. */);
const data = await response.json();

const projects: IProject[] = mapResponse(data);