相关疑难解决方法(0)

折叠一个有区别的联合——从联合派生出一个包含所有可能的键值组合的伞型

我有一个受歧视的工会,例如:

type Union = { a: "foo", b: string, c: number } | {a: "bar", b: boolean }
Run Code Online (Sandbox Code Playgroud)

我需要派生一个包含所有潜在属性的类型,分配有可能在 的任何成员上找到的类型Union,即使仅在某些成员上定义 - 在我的示例中:

type CollapsedUnion = { 
  a: "foo" | "bar", 
  b: string | boolean, 
  c: number | undefined 
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能制作一个派生出这种折叠联合的泛型?
我需要一个支持任何大小联合的泛型。

通过使用 native OmitUtility可以作为副产品实现类似的行为,但不幸的是,它遗漏了每个联合成员上不存在的属性(不将它们计入 asundefined或 via ?)。

generics union discriminated-union typescript

5
推荐指数
1
解决办法
150
查看次数

标签 统计

discriminated-union ×1

generics ×1

typescript ×1

union ×1