Reactjs 将大json对象映射到typescript中的模型对象
我有对象数组,每个对象包含Reactjs 将大json对象映射到typescript中的模型对象,reactjs,typescript,Reactjs,Typescript,我有对象数组,每个对象包含 { Id:"..", name:"..", foo1:"..", foo2:"..", ... } 我只需要这些项目的2个属性,所以我创建了一个接口 export interface IMenuModel{ Id:number; name?:string; } 并在此方法中检索以下数据: fetch(`..`).then((response: Response): Promise<{ value:IMenuModel[]
{
Id:"..",
name:"..",
foo1:"..",
foo2:"..",
...
}
我只需要这些项目的2个属性,所以我创建了一个接口
export interface IMenuModel{
Id:number;
name?:string;
}
并在此方法中检索以下数据:
fetch(`..`).then((response: Response): Promise<{ value:IMenuModel[] }> => {
return response.json();
})
.then((response: { value: IMenuModel[] }): void => {
debugger //expected response is array of IMenuModel but it still contains all properties
fetch(`..`)。然后((响应:响应):Promise=>{
返回response.json();
})
.then((响应:{value:IMenuModel[]}):void=>{
调试器//预期响应是IMenuModel的数组,但它仍然包含所有属性
我希望这个响应对象是我的自定义模型(IMenuModel)的数组,但它仍然包含从远程源检索到的所有属性
我可以使用“.map()”函数提取它们,这没问题,但是函数(响应:{value:IMenuModel[]}
)定义了返回类型,所以我不必这样做(或者每次都必须手动映射它)
为什么在我的对象模型中仍然没有响应?实现这一点最有效的方法是什么?TypeScript主要是JavaScript上的一个类型层。这些类型不会更改类型化对象。当传输到JavaScript时,类型化被简单地删除。如果应用一个接口(或多个接口)对于JSON对象,您不需要更改对象的性质,只需声明该接口的保证 因此,当您定义
IMenuModel
接口并将其应用于导入的对象时,您的意思是:“我知道并且我可以保证给定对象提供接口中定义的成员。”这个保证是被你的对象所满足的,所以在那里一切都很好。但是这个对象仍然在它的完全荣耀中被传输和恢复。把接口看作最小的保证,而不是对对象的完整描述。
如果您不想要对象的其他成员,您唯一的选择是让服务器只发送您需要的对象部分。如果您不能这样做,您不必担心,因为您的对象满足接口的最低要求。只需忽略其他值