Skip to content

cases() function

最初にマッチした述語に基づいてマップされた値を返します。述語は boolean を返すか、型の絞り込みを行うことができます。

述語が型の絞り込みである場合、対応するマッパーは絞り込まれた型を受け取ります。そうでない場合、マッパーは元の型を受け取ります。一致するものがない場合、入力値はそのまま返されます(関数の数が偶数の場合)。または、default 関数(述語とペアになっていない最後の関数)が提供されている場合は実行されます(関数の数が奇数の場合)。

Signature:

typescript
declare function cases(): (value: unknown) => typeof value;

Returns:

(value: unknown) => typeof value

Example 1

ts
pipe(
  [10, 20, 30],
  map(
    cases(
      lt(15),
      (n) => n + 20,
      lt(25),
      (n) => n + 10,
    ),
  ),
  toArray,
); // [30, 30, 30]

Example 2

with type refinement

ts
type A = { a: string };
type B = A & { b: string };

pipe(
  [{ a: "A", b: "B" }, { a: "A" }] as A[],
  map(
    cases(
      (n): n is B => "b" in n,
      (n) => n.b,
      (n) => n.a,
    ),
  ),
  toArray,
); // ["B", "A"]

Open Source Code

Released under the Apache-2.0 License.