Skip to content

otherwise ​

otherwise() termine un pipeline de pattern matching en fournissant une valeur de repli pour tous les cas restants. Il dépile automatiquement les PatternResult retournés par match/when et vous redonne la valeur finale.

Exemple interactif ​

Syntaxe ​

Signature classique ​

typescript
function otherwise<
	GenericInput extends AnyValue, 
	GenericInputValue extends Exclude<GenericInput, PatternResult>, 
	GenericInputPatternResult extends Extract<GenericInput, PatternResult>, 
	GenericOutput extends AnyValue
>(
	input: GenericInput | GenericInputPatternResult | GenericInputValue, 
	theFunction: (rest: GenericInputValue) => GenericOutput
): (GenericOutput | Unwrap<GenericInputPatternResult>);

Signature currifiée ​

typescript
function otherwise<
	GenericInput extends AnyValue, 
	GenericInputValue extends Exclude<GenericInput, PatternResult>, 
	GenericInputPatternResult extends Extract<GenericInput, PatternResult>, 
	GenericOutput extends AnyValue
>(
	theFunction: (rest: GenericInputValue) => GenericOutput
): (
	input: GenericInput | GenericInputPatternResult | GenericInputValue
) => (GenericOutput | Unwrap<GenericInputPatternResult>);

Le type reçu dans rest correspond aux cas qui n'ont pas encore été couverts par vos match/when précédents.

Paramètres ​

  • input (optionnel) : valeur à fermer immédiatement (souvent le résultat d'un when ou d'un match).
  • theFunction : fallback exécuté pour les cas restants. Peut retourner n'importe quel type (sync ou async).

Valeur de retour ​

La valeur retournée par theFunction si aucun motif n'a matché, sinon celle du PatternResult déjà présent. Après otherwise, vous n'obtenez plus de PatternResult mais une valeur « normale ».

Bonnes pratiques ​

  • Utilisez otherwise pour terminer un pipeline lorsqu'un fallback suffit. Si vous devez garantir l'exhaustivité stricte, préférez exhaustive.
  • Le paramètre rest est déjà typé avec les cas restants. Profitez-en pour manipuler ses champs sans cast.
  • Vous pouvez n'importe quand réinjecter la valeur dans un nouveau pipe, Either, etc. puisqu'elle est déballée.

Voir aussi ​

Diffusé sous licence MIT.