Type Alias OneOf<union, fallback, keys>

OneOf: union extends infer item
    ? Prettify<
        item & {
            [key in Exclude<keys, keyof item>]?: fallback extends object
                ? key extends keyof fallback ? fallback[key] : undefined
                : undefined
        },
    >
    : never

Type Parameters

  • union extends object
  • fallback extends object | undefined = undefined
  • keys extends KeyofUnion<union> = KeyofUnion<union>