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