Type alias OneOf<union, fallback, keys>

OneOf<union, fallback, keys>: 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>