Published on

Ts Erzwingen eines Typs oder eines anderen

Author

Indem wir einen Typ | einen anderen machen, erzwingen wir, dass diese oder jene Eigenschaft in einem Typ obligatorisch sein sollte, aber nicht in einem anderen.

export type FormConfirmationProps<V extends FormValues> = {
  requireConfirmation: true
  onConfirm: OnConfirmForm<V>
  onSubmit?: never
}

export type FormNoConfirmationProps<V extends FormValues> = {
  requireConfirmation?: never
  onConfirm?: never
  onSubmit: OnSubmitForm<V>
}

export type FormProviderProps<V extends FormValues> = {
  ...
} & (FormConfirmationProps<V> | FormNoConfirmationProps<V>)