Skip to content

cases() function

첫 번째로 일치하는 조건자(predicate)를 기반으로 매핑된 값을 반환합니다. 조건자는 boolean을 반환하거나 타입 세분화(type refinement)가 될 수 있습니다.

조건자가 타입 세분화인 경우, 해당 매퍼는 좁혀진 타입을 받습니다. 그렇지 않으면 매퍼는 원래 타입을 받습니다. 일치하는 항목이 없으면 입력 값이 그대로 반환됩니다. (함수의 개수가 짝수인 경우) 또는 제공된 경우 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.