typescript 如何从对象数组中提取联合属性?

ee7vknir  于 2022-12-19  发布在  TypeScript
关注(0)|答案(1)|浏览(201)

我有对象数组

const data = [{ test: 'first'}, { test: 'second'} ]

如何获得如下所示的联合类型:

const TestType = 'first' | 'second'

从这个数组中
也许我们可以推断出它的某种方式,或者?

oug3syen

oug3syen1#

所以实际上是有办法做到的。
不过,要使其正常工作,您需要在data数组中包含一个as constAssert。

    • 示例:**
const data = [{ test: 'first'}, { test: 'second'} ] as const
const dataForType = [...data.map(d => d.test)]

type TestType = typeof dataForType[number];

因此,基本上我们创建一个新数组,迭代原始的data数组,并返回所有对应的test键的值。
然后我们创建一个联合类型,它是所有这些值的顶点。
也许有一个更短的方式来写这一点,但这是它的主旨。
Playground示例

相关问题