///
declare module 'optionals' {
export interface Option {
get(): T;
isEmpty(): Boolean;
isDefined(): Boolean;
contains(value: T): Boolean;
exists(predicate: (value: T) => Boolean): Boolean;
filter(predicate: (value: T) => Boolean): Option;
flatMap(transformer: (value: T) => Option): Option;
map(transformer: (value: T) => U): Option;
flatten(): Option;
getOrElse(other: T): T;
orNull(): T;
match(matcher: {
some: (val: T) => U | void;
none: () => U | void;
}): U;
}
export class Some implements Option {
value: T;
constructor(val: T);
get(): T;
isEmpty(): Boolean;
isDefined(): Boolean;
contains(value: T): Boolean;
exists(predicate: (value: T) => Boolean): Boolean;
filter(predicate: (value: T) => Boolean): Option;
flatMap(transformer: (value: T) => Option): Option;
map(transformer: (value: T) => U): Option;
flatten(): Option;
getOrElse(other: T): T;
orNull(): T;
match(matcher: {
some: ((val: T) => U | void);
none: (() => U | void);
}): U;
}
export class None implements Option {
get(): T;
isEmpty(): Boolean;
isDefined(): Boolean;
contains(value: T): Boolean;
exists(predicate: (value: T) => Boolean): Boolean;
filter(predicate: (value: T) => Boolean): Option;
flatMap(transformer: (value: T) => Option): Option;
flatten(): Option;
map(transformer: (value: T) => U): Option;
getOrElse(other: T): T;
orNull(): T;
match(matcher: {
some: ((val: T) => U | void);
none: (() => U | void);
}): U;
}
}