如何从Set类型中提取其成员的联合类型?
提取Set类型的成员联合类型
在TypeScript中,可以借助条件类型和infer关键字实现这个需求,具体步骤如下:
- 先定义一个通用工具类型,用于提取Set的泛型参数:
type ExtractSetMembers<S> = S extends Set<infer T> ? T : never;
- 直接使用这个工具类型处理目标Set类型:
type MySet = Set<"foo" | "bar">; type MySetMembers = ExtractSetMembers<MySet>; // 最终结果为 "foo" | "bar"
逻辑说明
工具类型ExtractSetMembers会判断传入的类型S是否继承自Set<infer T>:
- 如果匹配成功,
infer T会自动推断出Set内部的成员类型,也就是我们需要的联合类型; - 如果传入的不是Set类型,则返回
never类型。
内容的提问来源于stack exchange,提问作者silverwind
相关产品推荐
相关产品推荐

