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, whenNot, 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...).

matchWithString ​

Distribue exhaustivement une union de chaînes littérales vers des handlers typés.

matchWithStringOtherwise ​

Traite certaines chaînes littérales et transmet les cas restants à un fallback typé.

matchWithNumber ​

Distribue exhaustivement une union de nombres littéraux vers des handlers typés.

matchWithNumberOtherwise ​

Traite certains nombres littéraux et transmet les cas restants à un fallback typé.

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é.

whenNot ​

Ajoute une garde (type predicate ou boolean) dans un pipeline. Si la condition est fausse, 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.