Create a lazy conditional that defers evaluation
// Only evaluates conditions and values when needed
const getMessage = Cond.lazy<string>()
.when(() => isError(), () => computeErrorMessage())
.when(() => isWarning(), () => computeWarningMessage())
.else(() => "Success")
// Complex conditional with expensive checks
const result = Cond.lazy<Action>()
.when(
() => user.role === "admin" && checkAdminPermissions(),
() => ({ type: "admin", permissions: loadAdminPermissions() })
)
.when(
() => user.role === "user" && user.isActive,
() => ({ type: "user", permissions: loadUserPermissions() })
)
.else(() => ({ type: "guest", permissions: [] }))
Pattern matching helper that ensures exhaustiveness
Create a conditional expression that must end with else
Conditional expression builder for functional if/else chains