我有一个常量数组,其中的对象满足一个类型:
const X = [
{a: 1, b: 2},
{a: 3, b: 2},
{a: 5, b: 4}
] as const satisfies {a: any};
有没有一种方法可以得到我传递的所有扩展泛型类型的元素的联合类型。例如:
type b2 = Discriminator<X, {b: 2}>; // {a: 1, b: 2} | {a: 3, b: 2}
type b4 = Discriminator<X, {b: 4}>; // {a: 5, b: 4}
1条答案
按热度按时间edqdpe6u1#
这里
Discriminator
是一个类型,它接受对象数组为T
,并接受匹配对象为U
。T[number]
获取所有可能的数组成员类型作为联合,然后Extract<T[number], U>
仅获取该联合中与U
匹配的成员见操场