如何在TypeScript与GraphQL环境下为数组中每个元素添加name属性
解决方法:用
map转换数组格式 当然可行呀!你现在的问题出在使用了forEach——这个方法只是遍历数组执行回调,不会返回新数组,所以你当前的names变量其实是undefined,自然没法得到想要的对象数组。
要实现字符串数组到{name: string}对象数组的转换,你应该用数组的map方法,它专门用来处理这类“把每个元素转换成新格式并生成新数组”的场景。
修正后的代码
const mydata = response.data.myTypes; // 用map遍历每个元素,返回带name属性的对象 const names = mydata.map((element: string) => ({ name: element }));
简单解释
map会遍历mydata里的每一个字符串元素,对每个元素执行回调函数- 回调函数里我们直接返回一个对象
{ name: element },把当前元素赋值给name属性 - 最后
map会把所有回调返回的对象收集起来,形成一个新数组赋值给names,这就是你要的格式啦
另外,建议把element: any改成element: string,这样TypeScript能帮你做类型检查,避免后续出现不必要的类型错误~
内容的提问来源于stack exchange,提问作者Ilo_Iloo
相关产品推荐
相关产品推荐

