小编Jon*_*uli的帖子

打字稿将数组转换为具有指定类型的对象

我正在尝试将类数组转换为以类名作为对象键的对象。所以;

我有一个类数组:

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

6
推荐指数
1
解决办法
4364
查看次数

标签 统计

typescript ×1