Javascript Typescript—是否有一种方法可以从集合的所有成员推断联合,而不是从第一个成员推断联合?

Javascript Typescript—是否有一种方法可以从集合的所有成员推断联合,而不是从第一个成员推断联合?,javascript,typescript,Javascript,Typescript,当TS从输入集合推断时,其默认行为是获取集合的第一个成员 当存在多个可能的类型时,这是令人沮丧的,理想情况下TS会推断一个联合 见 有人知道是否有一种方法可以推断联合而不仅仅是第一个成员的类型吗?这可以通过泛型类型扩展{value:any}来实现: 类值{ 建造师( 数据:T[] ){} } 常数测试=新值([ {value:1}, {value:'string'} ]) const test2=新值([ {value:'string'}, {value:1}, ]) .对不起,我的回答太仓促

当TS从输入集合推断时,其默认行为是获取集合的第一个成员

当存在多个可能的类型时,这是令人沮丧的,理想情况下TS会推断一个联合


有人知道是否有一种方法可以推断联合而不仅仅是第一个成员的类型吗?

这可以通过泛型类型扩展
{value:any}
来实现:

类值{
建造师(
数据:T[]
){}
}
常数测试=新值([
{value:1},
{value:'string'}
])
const test2=新值([
{value:'string'},
{value:1},
])

.

对不起,我的回答太仓促了;它现在只适用于一个通用的。实际上我现在就是这样做的。问题是您得到的推断类型是
{value:string}{value:number}
,而不是
string | number
。您可以使用类似于
T扩展{value:infery}的东西?Y:错来推断值,但有点混乱;我希望通过内联方式或者找到一种更干净的方式来实现。