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"]