Skip to content

matchWithString

matchWithString() performs exhaustive pattern matching on a string literal or a union of string literals. Every possible value must have exactly one handler, guaranteeing that no case is left unprocessed. The selected callback receives the literal value corresponding to its key, correctly narrowed by TypeScript.

Interactive example

Syntax

Classic signature

typescript
function matchWithString<Input extends string, Matcher>(
  input: Input,
  matcher: Matcher
): ReturnType<Matcher[keyof Matcher]>

Curried signature

typescript
function matchWithString<Input extends string, Matcher>(
  matcher: Matcher
): (input: Input) => ReturnType<Matcher[keyof Matcher]>

Parameters

  • input: a string literal or a union of string literals. Broad string values are rejected.
  • matcher: an exhaustive object whose keys are exactly the input literals. Each handler receives its corresponding narrowed literal.

Return value

The selected handler result. Its static type is the union of all handler return types.

See also

Released under the MIT license.