@pacote/iff
Version:
Conditional expressions with Option support.
22 lines (20 loc) • 500 B
text/typescript
import { None, type Option, Some } from '@pacote/option'
export function iff<T>(predicate: boolean, onConsequent: () => T): Option<T>
export function iff<T>(
predicate: boolean,
onConsequent: () => T,
onAlternative: () => T,
): T
export function iff<T>(
predicate: boolean,
onConsequent: () => T,
onAlternative?: () => T,
): T | Option<T> {
return onAlternative
? predicate
? onConsequent()
: onAlternative()
: predicate
? Some(onConsequent())
: None
}