我有以下打字稿代码:
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] 删除。
我来说两句