UNPKG

nochoices

Version:

Full featured implementation of options into typescript.

57 lines (31 loc) 1.42 kB
import { Option } from "./option.js" import { Some } from "./some.js" import { AreEqual, FlattenOption } from "./types.js"; export abstract class OptionalValue<T> { abstract isPresent(): boolean abstract isAbsent(): boolean abstract unwrap(): T abstract map<M>(fn: (a: T) => M): Option<M> abstract filter(fn: (a: T) => boolean): Option<T> abstract expect(err: Error): T abstract unwrapOr<U>(defaultValue: U): T | U abstract unwrapOrElse(defaultFn: () => T): T abstract flatten(): Option<FlattenOption<T>> abstract zip<U>(another: OptionalValue<U>): Option<[T, U]> abstract zipWithSome<U>(some: Some<U>): Option<[U, T]> abstract and<V>(another: Option<V>): Option<V> abstract or(self: Option<T>, another: Option<T>): Option<T> abstract xor(another: OptionalValue<T>): Option<T> abstract xorWithNone(): Option<T> abstract xorWithSome(some: Some<T>): Option<T> abstract andThen<U>(fn: (t: T) => Option<U>): Option<U> abstract orElse(fn: () => Option<T>): Option<T> abstract getOrInsert(value: T): OptionalValue<T> abstract getOrInsertWith(fn: () => T): OptionalValue<T> abstract takeValue(): Option<T> abstract isSomeAnd(andFn: (t: T) => boolean): boolean abstract ifSome(param: (t: T) => void): void abstract ifNone(fn: () => void): void abstract toArray(): T[] abstract equalsWith(another: OptionalValue<T>, equality: AreEqual<T>): boolean }