我想要一个像下面这样的泛型类型
F
type X = F<'a'|'b'|'c'>
那么
X
'a'
如果
type X = F<'alpha'|'beta'|'gamma'|'delta'>
'alpha'
以下方法不起作用:
type F<T> = T extends (infer FirstToken | any) ? FirstToken : T
测试一下这里。
在 TS 中,您无法直接从字符串文字类型中提取第一个类型,因为它不是按顺序排列的 - 与数组或元组不同。
union 中的第一个概念在语言中并不存在。
但是,您可以使用分布式条件类型,其使用方式类似于从联合中提取“第一个”类型。
但是,重要的是要了解这种行为是 TS 处理条件类型的结果,并且不能保证始终按您的预期工作。
在这里测试