我有这样的界面:
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}
});
但还有其他更好的方法吗?
答案 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);