const result = match(5, [
[(n) => n === 10, () => "Exactly ten"],
[(n) => n > 0, (n) => `Positive: ${n}`],
]);
console.log(result); // Output: "Positive: 5"
// Matching against an Option type
type None = { type: "None" };
type Some<T> = { type: "Some"; value: T };
type Option<T> = Some<T> | None;
const None: None = { type: "None" };
const Some = <T>(value: T): Some<T> => ({ type: "Some", value });
const value: Option<number> = Some(15);
const message = match(value, [
[(x) => x.type === "Some", (x) => `Some value: ${x.value}`],
[(x) => x.type === "None", () => "No value"]
]);
console.log(message); // Output: "Some value: 15"
Pattern matching function for TypeScript.