Ani*_*iks 28 javascript typescript ecmascript-6 typescript2.0
我是Typescript的新手,我需要迭代一个Record类型,对值进行一些更新并返回Record.
这是类型的定义方式:
type Parent = Readonly<Record<string, Children>>;
type Children = ReadonlyArray<string>;
Run Code Online (Sandbox Code Playgroud)
这是我想迭代的一些示例数据:
const data = {
parent1: ["child1", "child2"],
parent2: ["child1","child2"]
};
Run Code Online (Sandbox Code Playgroud)
更新记录中的值的方法:
const updateChildren = (child: Children) : Children => {
return child.map( value => value + 'updated');
}
Run Code Online (Sandbox Code Playgroud)
我正在努力编写它的语法,试图寻找示例,但找不到任何有用的东西。
我可以使用迭代记录Object.entries
Object.entries(data).forEach(([key, value]) => console.log(key, value));
Run Code Online (Sandbox Code Playgroud)
我也尝试使用Object.keys
Object.keys(data)
.map(key => updateChildren(data[key]))
Run Code Online (Sandbox Code Playgroud)
我想我已经很接近了,但不知道如何返回地图,因为这里它返回了Array [Array]
是否有一些好的方法来迭代更新,并且它会以使用的相同类型返回更新的数据。
谢谢阅读。
这是我正在尝试做的 javascript 片段,并获取updatedMap下面的示例。
type Parent = Readonly<Record<string, Children>>;
type Children = ReadonlyArray<string>;
Run Code Online (Sandbox Code Playgroud)
ris*_*ong 15
像这样的东西...
type Children = ReadonlyArray<string>;
const data: Parent = {
parent1: ["child1", "child2"],
parent2: ["child1", "child2"],
};
type MutableObject<T> = { -readonly [P in keyof T]: T[P] };
const updateChildren = (child: Children): Children => {
return child.map(value => value + 'updated');
}
let newObj: Parent = Object.entries(data).reduce<MutableObject<Parent>>((acc, cur) => {
acc[cur[0]] = updateChildren(cur[1]);
return acc;
}, {})
console.log(newObj)
Run Code Online (Sandbox Code Playgroud)