我正在尝试将类数组转换为以类名作为对象键的对象。所以;
我有一个类数组:
const renderers = [
Battery,
Kind
]
Run Code Online (Sandbox Code Playgroud)
我想转换为一个对象,如:
{
Battery: Battery,
Kind: Kind
}
Run Code Online (Sandbox Code Playgroud)
为此,我使用reduce获取对象:
const convertedObject = renderers.reduce((acc, renderer) => {
acc[renderer.name] = renderer;
return acc;
}, {});
Run Code Online (Sandbox Code Playgroud)
所以convertedObject现在有一个类型的{}. 我想要这个类型{ Battery: typeof Battery, Kind: typeof Kind}(这样我就可以用keyof typeof字符串值创建一个类型。)
我知道如何通过执行type RendererType = typeof renderers[0]来获取数组的类型,这让我typeof Battery | typeof Kind. 然后在减速器中我可以这样做:
renderers.reduce<{[x: string]: RendererType }>((acc, renderer) => {
acc[renderer.name] = renderer;
return acc;
}, {});
Run Code Online (Sandbox Code Playgroud)
所以,现在,convertedObject …
typescript ×1