我有对象数组
const data = [{ test: 'first'}, { test: 'second'} ]
如何获得如下所示的联合类型:
const TestType = 'first' | 'second'
从这个数组中也许我们可以推断出它的某种方式,或者?
oug3syen1#
所以实际上是有办法做到的。不过,要使其正常工作,您需要在data数组中包含一个as constAssert。
data
as const
const data = [{ test: 'first'}, { test: 'second'} ] as const const dataForType = [...data.map(d => d.test)] type TestType = typeof dataForType[number];
因此,基本上我们创建一个新数组,迭代原始的data数组,并返回所有对应的test键的值。然后我们创建一个联合类型,它是所有这些值的顶点。也许有一个更短的方式来写这一点,但这是它的主旨。Playground示例
test
1条答案
按热度按时间oug3syen1#
所以实际上是有办法做到的。
不过,要使其正常工作,您需要在
data
数组中包含一个as const
Assert。因此,基本上我们创建一个新数组,迭代原始的
data
数组,并返回所有对应的test
键的值。然后我们创建一个联合类型,它是所有这些值的顶点。
也许有一个更短的方式来写这一点,但这是它的主旨。
Playground示例