const arr = [
{
a: 1,
b: [
{
k: 'k1',
v: 2,
},
{
k: 'k2',
v: 2,
},
],
},
{
a: 1,
b: [
{
k: 'k1',
v: 2,
},
{
k: 'k2',
v: 2,
},
],
},
]
function flatData(res) {
res.map((item) => {
item.b.forEach((custom) => {
item[custom.k] = custom.v
})
return item
})
return res
}
const data = flatData(arr)
console.log(data);
// [
// { a: 1, b: [ [Object], [Object] ], k1: 2, k2: 2 },
// { a: 1, b: [ [Object], [Object] ], k1: 2, k2: 2 }
// ]
// 推断新增的属性
data.k1
补充:
本来要这样实现
发现实现不了,因为你传的数据中,只有a,b属性,这样ts就会立马推断,你的对象中只有a,b属性,无法给你再增加一个k属性。
ts都是提前定义的,或者根据你的数据推断,但是只会定义一次,后续就不会再更改,因此当你改变数据的时候,ts不会再改的你的类型
所以你这个肯定是无法实现的