typescript-将json强制转换到接口
我有这样一个界面:typescript-将json强制转换到接口,json,typescript,interface,Json,Typescript,Interface,我有这样一个界面: export default interface IProject extends{ Id?:number; name?:string; description?:string; } { id, name, description, url, startDate, finishDate } response.data.map((p: any) => { return {id:p.id,n
export default interface IProject extends{
Id?:number;
name?:string;
description?:string;
}
{
id,
name,
description,
url,
startDate,
finishDate
}
response.data.map((p: any) => {
return {id:p.id,name:p.name,description:p.description}
});
当我从服务器获取数据时,json文件包含以下更多属性:
export default interface IProject extends{
Id?:number;
name?:string;
description?:string;
}
{
id,
name,
description,
url,
startDate,
finishDate
}
response.data.map((p: any) => {
return {id:p.id,name:p.name,description:p.description}
});
但我只需要id、name和description字段。我试过这个:
response.data.map((p: any) => p as IProject);
但该对象包含url、startdate和finishDate等不必要的数据
如何正确地映射它们?
我知道我们可以这样绘制它们:
export default interface IProject extends{
Id?:number;
name?:string;
description?:string;
}
{
id,
name,
description,
url,
startDate,
finishDate
}
response.data.map((p: any) => {
return {id:p.id,name:p.name,description:p.description}
});
但是还有其他更好的方法吗?我建议您做您正在做的事情,但另外还要为您的服务器响应添加一些类型。这样,您就可以为映射函数获得一些智能感知
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);
可能重复的