使用打字稿从对象数组创建对象

约翰1301s

我有以下打字稿代码:

const a = [{ foo: 1 }, { bar: '2' }]

我希望用来a创建形式的对象:

const b = {
  foo: 1,
  bar: '2'
}

的类型b应该等同于类型:

type EquivalentType = {
  foo: number
  bar: string
}

这可能没有铸造吗?如何才能做到这一点?

猫女凯莉

当然有。这个解决方案不需要as const像@Vija02 那样的(尽管如果它确实很好)。

映射数组中所有可能的键,然后使用以下方法仅获取该键的类型Extract

type CreateFrom<T extends ReadonlyArray<unknown>> = { [K in keyof T[number]]-?: Extract<T[number], { [_ in K]: any }>[K] };

然后你只需在假定的函数中使用这种类型:

function createFrom<T extends ReadonlyArray<unknown>>(list: T): CreateFrom<T> {
    // ... for you to implement!
}

请注意,您可能需要转换返回类型。我认为 TypeScript 不会对此感到太满意。

最后,是一个展示解决方案的游乐场。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章