如何从TypeScript数组类型中选取指定对象类型?
提取联合类型中的指定成员类型
当然可行,你可以通过TypeScript的工具类型和索引访问类型实现这个需求:
实现方式
利用Extract工具类型结合数组元素类型访问,直接从Users的元素联合类型中筛选出目标类型:
type userSocialMediaInfo = Extract<Users[number], { typename: "socialMedia" }>;
原理说明
Users[number]:通过索引访问类型获取数组Users的元素类型,也就是包含personal和socialMedia的联合类型。Extract<T, U>:TypeScript内置工具类型,作用是从联合类型T中提取出可赋值给U的成员,这里就是筛选出typename为"socialMedia"的对象类型。
验证结果
最终userSocialMediaInfo等价于你需要的类型:
{ typename: "socialMedia"; userName: string; email: string; }
内容的提问来源于stack exchange,提问作者Sina
相关产品推荐
相关产品推荐

