用于访问集合的typescript常量上下文

用于访问集合的typescript常量上下文,typescript,Typescript,使用const上下文,我想保证类型是集合的成员 对阵列执行此操作非常优雅: const values = ['apple', 'banana'] as const type value = typeof values[number] 对于布景,我不知道如何写得如此优雅。以下代码可以工作,但感觉很笨拙: const valueSet = new Set(['apple', 'banana'] as const) type value = typeof valueSet extends Set&l

使用const上下文,我想保证类型是
集合的成员

对阵列执行此操作非常优雅:

const values = ['apple', 'banana'] as const
type value = typeof values[number]
对于布景,我不知道如何写得如此优雅。以下代码可以工作,但感觉很笨拙:

const valueSet = new Set(['apple', 'banana'] as const)
type value = typeof valueSet extends Set<infer U> ? U : never
const valueSet=新设置(['apple','banana']作为const)
类型值=类型值集扩展集?U:从来没有

有没有一种方法可以在不使用三元数的情况下得到相同的结果?

也不是很优雅,但是没有三元数:
type value=Parameters[number]
推断U版本没有问题,我认为没有更好的了。
数组
number
索引处具有类型为
T
的属性,因此可以使用。
Set
没有任何这样的属性,只有接受/返回类型为
t
的值的方法,因此您需要类似
ReturnType
参数的东西来获取它们,这些方法使用的条件类型中包含
推断
。如果要创建类型别名以隐藏它,可以。我不知道该怎么建议。