我有一个受歧视的工会,例如:
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 ?)。