Skip to content

Either

Monade Either pour la gestion d'erreurs fonctionnelle et type-safe. Permet de représenter une valeur qui peut être soit un succès (Right), soit une erreur (Left), évitant ainsi l'utilisation d'exceptions.

Comment faire les imports ?

La bibliothèque expose les namespaces DEither et E depuis l'entrée principale ou en import direct (tree-shaking friendly), ce qui permet de ne charger que ce dont vous avez besoin.

typescript
import { DEither, E } from "@duplojs/utils";
import * as DEither from "@duplojs/utils/either";
import * as E from "@duplojs/utils/either";

Guide

Une explication complète (concept, info obligatoire, pattern matching, pipelines et variantes) est disponible ici :

Constructeurs Right

Construit un EitherRight typé avec une information métier obligatoire (payload optionnel).

success

Raccourci pour retourner un succès right("success", value) de manière expressive.

ok

Retourne un Right sans valeur (void) taggé avec l'information littérale "ok".

Constructeurs Left

left

Construit un EitherLeft en fournissant l'information métier et éventuellement une valeur.

error

Raccourci pour signaler une erreur typée left("error", value).

fail

Retourne un Left sans payload taggé "fail" pour les cas d'échec génériques.

Contrôles Right

isRight

Type guard qui vérifie si une valeur est un EitherRight.

whenIsRight

Exécute une fonction uniquement quand l'entrée est Right, sinon relaie la valeur originale.

Contrôles Left

isLeft

Type guard qui détecte un EitherLeft.

whenIsLeft

Permet d'appliquer une fonction lorsqu'on reçoit un Left puis de continuer le flux.

Pipelines orientés Right

rightPipe

Chaîne des transformations synchrones tant que les résultats restent Right, s'interrompt sur le premier Left.

rightAsyncPipe

Version asynchrone acceptant promesses, Future ou Either et s'arrêtant automatiquement sur un Left.

group

Agrège plusieurs Either synchrones et renvoie le premier Left ou un objet des valeurs Right.

asyncGroup

Version asynchrone de group acceptant promesses et Future.

Autre

hasInformation

Type guard basé sur l'information littérale pour cibler précisément un cas métier.

whenHasInformation

Pattern matching qui déclenche une fonction quand l'information (ou une liste d'infos) correspond.

safeCallback

Exécute un callback en capturant les exceptions dans un Left<"callback">.

Helpers booléens

bool

Convertit n'importe quelle valeur en Either booléen (Right si truthy, Left si falsy) tout en conservant le typage.

boolTruthy

Force la création d'un Right<"bool"> en marquant explicitement une valeur truthy.

boolFalsy

Construit un Left<"bool"> à partir d'une valeur falsy (undefined, null, "", 0, false).

isBoolTruthy

Type guard spécialisé pour les boolTruthy.

whenIsBoolTruthy

Déclenche une fonction uniquement lorsqu'une valeur (ou le résultat de bool) est truthy.

isBoolFalsy

Type guard spécialisé pour les boolFalsy.

whenIsBoolFalsy

Déclenche une fonction uniquement lorsqu'une valeur (ou le résultat de bool) est falsy.

Gestion des valeurs nullish

nullish

Transforme une valeur potentiellement null/undefined en Either, remplie à droite si la valeur existe.

nullishEmpty

Construit explicitement un Left<"nullish"> avec une valeur null ou undefined.

nullishFilled

Construit un Right<"nullish"> à partir d'une valeur définie.

isNullishEmpty

Type guard pour détecter un nullishEmpty.

whenIsNullishEmpty

Applique une fonction uniquement pour le cas nullishEmpty.

isNullishFilled

Type guard pour détecter un nullishFilled.

whenIsNullishFilled

Applique une fonction lorsque la valeur nullish est effectivement définie (Right).

Gestion des valeurs nullables

nullable

Encapsule un null possible en Either, ce qui impose de gérer l'absence de valeur.

nullableEmpty

Construit un Left<"nullable"> contenant null.

nullableFilled

Construit un Right<"nullable"> avec une valeur non nulle.

isNullableEmpty

Type guard pour les nullableEmpty.

whenIsNullableEmpty

Callback déclenché uniquement lorsque la valeur est null.

isNullableFilled

Type guard pour les nullableFilled.

whenIsNullableFilled

Callback déclenché lorsque la valeur nullable est présente (Right).

Gestion des optionnels

optional

Wrappe une valeur possiblement undefined en Either, utile pour les champs optionnels.

optionalEmpty

Construit un Left<"optional"> contenant undefined.

optionalFilled

Construit un Right<"optional"> avec une valeur définie.

isOptionalEmpty

Type guard pour les optionalEmpty.

whenIsOptionalEmpty

Callback déclenché uniquement lorsqu'un optionnel est vide.

isOptionalFilled

Type guard pour les optionalFilled.

whenIsOptionalFilled

Callback déclenché lorsqu'un optionnel contient une valeur.

Futures et asynchronisme

future

Convertit une valeur (ou un Either) en Future, classe dérivée de Promise avec support de Future.all.

futureSuccess

Construit un EitherRight<"future"> pour signaler explicitement une résolution réussie.

futureError

Construit un EitherLeft<"future"> pour représenter une erreur asynchrone standardisée.

Diffusé sous licence MIT.