Skip to content

Pattern

Le pattern matching permet de déstructurer n'importe quelle donnée (union, tuple, objet, littéral, prédicat) et d'orchestrer un flux de contrôle typé grâce à match, when, otherwise et exhaustive. Chaque branche renvoie un PatternResult, ce qui évite les switch fragiles, simplifie le chaînage avec pipe et garantit l'exhaustivité au moment de la compilation.

Comment faire les imports ?

La bibliothèque expose les namespaces DPattern et P depuis l'entrée principale ou en import direct (tree-shaking friendly).

typescript
import { DPattern, P } from "@duplojs/utils";
import * as DPattern from "@duplojs/utils/pattern";
import * as P from "@duplojs/utils/pattern";

Exécution du matching

match

Associe un motif et une fonction de transformation. Retourne un PatternResult quand l'entrée correspond exactement au motif (primitive, tuple, objet, union...).

when

Ajoute une garde (type predicate ou boolean) dans un pipeline. Si la condition est vraie, la fonction associée est exécutée et son résultat est encapsulé.

otherwise

Définit le fallback appelé lorsque plus aucun motif n'a correspondu. Très utile pour fermer un pipe après plusieurs when.

exhaustive

Dépaquette un PatternResult pour récupérer la valeur finale et force TypeScript à vérifier que toutes les branches ont été traitées.

Construction et vérification des motifs

isMatch

Teste impérativement si une valeur correspond à un motif et renvoie un type guard (value is ...). Pratique pour les conditions simples sans déclencher de pipeline.

union

Compose plusieurs motifs dans un seul helper réutilisable (ToolPattern). Garantit que l'entrée correspond à l'un des motifs passés (en profondeur sur objets/tableaux).

Diffusé sous licence MIT.