Typescript 打字稿– ;对象数组并集的值产生交集,而不是并集
有两个不同对象的数组(数组Typescript 打字稿– ;对象数组并集的值产生交集,而不是并集,typescript,Typescript,有两个不同对象的数组(数组a和数组b),这些数组的并集的成员值–(a | b)[number]–生成它们的交集,而我期望的并集是: type a = { one: string }[]; type b = { one: string, two: string }[]; type ab = (a | b)[number]; // actual type: { one: string } // expected type: { one: s
a
和数组b
),这些数组的并集的成员值–(a | b)[number]
–生成它们的交集,而我期望的并集是:
type a = { one: string }[];
type b = { one: string, two: string }[];
type ab = (a | b)[number]; // actual type: { one: string }
// expected type: { one: string } | { one: string, two: string }
另见a
我想知道:
{one:string}
正确吗{one:string}{one:string,two:string}
预期类型
谢谢 是的,派生类型是正确的,但通常不是预期的 这就是工会在TS中的工作方式 考虑下一个例子:
type a={one:string};
类型b={one:string,two:string};
ab型=keyof(a | b);//“一个”
TS将返回one
,因为此键可在两种类型(a、b)之间共享
为了达到预期的行为,您可以尝试:
当条件类型作用于泛型类型时,当给定一个联合类型时,它们将成为分布式的
type a={one:string}[];
类型b={one:string,two:string}[];
类型ArrayValues=T扩展数组?永远不会
type Result=ArrayValues是,派生类型是正确的,但通常不是预期的
这就是工会在TS中的工作方式
考虑下一个例子:
type a={one:string};
类型b={one:string,two:string};
ab型=keyof(a | b);//“一个”
TS将返回one
,因为此键可在两种类型(a、b)之间共享
为了达到预期的行为,您可以尝试:
当条件类型作用于泛型类型时,当给定一个联合类型时,它们将成为分布式的
type a={one:string}[];
类型b={one:string,two:string}[];
类型ArrayValues=T扩展数组?永远不会
键入Result=ArrayValues太棒了,谢谢!在这种情况下,TS的行为感觉非常不直观。在这里,您可以找到一些有趣的typesAwesome,谢谢!在这种情况下,TS行为感觉非常不直观。在这里您可以找到一些有趣的类型