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



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

当存在不止一种可能的类型时,这是令人沮丧的,理想情况下TS会推断出并集。

有关的示例,请参见TS游乐场

有人知道是否有办法推断出一个联盟,而不仅仅是第一个成员的类型吗?

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

class InferValue<T extends { value: any }>{
constructor(
data: T[]
){}
}
const test = new InferValue([
{value: 1},
{value: 'string'}
])

const test2 = new InferValue([
{value: 'string'},
{value: 1},
])

这是带工作代码的TS游乐场。

最新更新