declare class Opt { private _value?; private _isDefined; private _isEmpty; private _arr; constructor(_value?: T); getOrThrow: () => T; value: () => T; isDefined: () => boolean; isEmpty: () => boolean; toArray: () => T[]; getOrElse: (v: T) => T; getOrElseF: (v: () => T) => T; map: (f: (value: T) => U) => Opt; flatMap: (f: (value: T) => Opt) => Opt; equals: (other: Opt) => boolean; forEach(fn: (value: T) => any): void; /** * You can always create an empty option by hand just by calling new Opt() * but calling this method will return a global instance instead of allocating a new one each time */ static empty: () => Opt; } export = Opt;