Skip to content

whenHasInformation

Pattern matching fonctionnel basé sur l'information littérale d'un Either. La fonction n'est exécutée que lorsque l'information (ou l'une des informations) correspond.

Exemple interactif

Syntaxe

Signature classique

typescript
function whenHasInformation<
  const GenericInput extends unknown,
  GenericInformation extends ReturnType<typeof eitherInformationKind.getValue<GenericInput>>,
  const GenericOutput extends AnyValue
>(
  input: GenericInput,
  information: GenericInformation | GenericInformation[],
  theFunction: (value: Unwrap<Extract<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation> & WrappedValue>>) => GenericOutput
): GenericOutput | Exclude<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation>>;

Signature currifiée

typescript
function whenHasInformation<
  const GenericInput extends unknown,
  GenericInformation extends ReturnType<typeof eitherInformationKind.getValue<GenericInput>>,
  const GenericOutput extends AnyValue
>(
  information: GenericInformation | GenericInformation[],
  theFunction: (value: Unwrap<Extract<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation> & WrappedValue>>) => GenericOutput
): (input: GenericInput) => GenericOutput | Exclude<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation>>;

Paramètres

  • information : Littéral ou tableau de littéraux acceptés.
  • theFunction : Callback invoqué uniquement lorsque l'information correspond.
  • input : Valeur à traiter immédiatement (sinon utilisez la version currifiée dans vos pipes).

Valeur de retour

  • Signature classique : retourne soit le résultat du callback, soit la valeur initiale (si aucune info ne correspond).
  • Signature currifiée : retourne une fonction prête à composer.

Cas d'usage

  • Écrire du pattern matching exhaustif sans switch ni if imbriqués.
  • Factoriser les traitements communs à plusieurs succès/erreurs (information accepte un tableau).
  • Réagir finement à des états métier décrits via E.right/E.left.

Voir aussi

Diffusé sous licence MIT.