将联合类型转换为条件类型

时间:2018-10-30 09:29:35

标签: typescript

给出两种类型

type UnionType = X | Y | Z;
type ConditionalType<T> = T extends X ? X : T extends Y ? Y : T extends Z ? Z : never;

我们如何定义可以应用于UnionType以获得ConditionalType的转换?

也欢迎进行任何类似操作的输入。

1 个答案:

答案 0 :(得分:1)

您无法创建该确切类型,因为它将需要递归类型别名(如果您欺骗了编译器,则可以,但不建议)。

如果我对您的要求的理解正确,那么您可以使用Extract条件类型来获得所需的结果。此类型将提取扩展给定类型的联合的所有成员

type ex = Extract <UnionType, X> //will be X or anything that extends Xin UnionType