如何将fetch得到的结果`res:Proj`转为`DataType`类型?-灵析社区

感觉对了

我们在使用[Form](https://link.segmentfault.com/?enc=9PaZUOTyhr6%2FqAfni0iUuA%3D%3D.jv9Dx0Gq%2FI7UyNShgqUHO%2Bomswlh8lJkid9zP0YqLNO%2BCJmU6rGi1a9GVlE4hdaVszmufPAOb85Ra7ccC4lX4g%3D%3D)的时候,一般Form的dataSource有自己的DataType: 例如定义的: interface DataType { key: React.Key; id: number; name: string; desc: string; loc: string; selected: boolean; createTime: Date; updateTime: Date; } 但是我fetch请求的数据有自己的类型。比如: export interface Proj { key: string; id: number; name: string; desc: string; loc: string; // 存放位置 createTime?: Date, updateTime?: Date } 请求数据: fetch.invoke('getProj').then((res:Proj) => { console.log('getProj:' ,res) } 这里遇到2个问题: 1)如何将得到的结果`res:Proj`转为`DataType`类型? 2)对比`DataType`和`Proj`,`DataType`多出`key`字段,如何按照顺序进行增加到`res`呢?

阅读量:138

点赞量:0

问AI
新增一个转换函数,对于key字段,如果Proj类型中没有这个字段,可以在转换函数中生成这个字段: function convertProjToDataType(proj: Proj): DataType { return { key: proj.key || proj.id.toString(), // 使用 Proj 的 key,如果不存在则使用 id 转换为字符串 id: proj.id, name: proj.name, desc: proj.desc, loc: proj.loc, selected: false, // 默认值,或者根据业务逻辑调整 createTime: proj.createTime || new Date(), // 如果没有提供,使用当前时间 updateTime: proj.updateTime || new Date() // 如果没有提供,使用当前时间 }; } 示例示例: fetch.invoke('getProj').then((res: Proj) => { const dataTypeObj = convertProjToDataType(res); console.log('Converted DataType Object:', dataTypeObj); });