Skip to content

cases() function

根据第一个匹配的谓词返回映射后的值。谓词可以返回布尔值或作为类型细化。

如果谓词是类型细化,相应的映射器将接收细化后的类型。否则,映射器将接收原始类型。如果没有匹配项,将原样返回输入值(如果函数数量为偶数)。或者如果提供了 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.