All files / option option.ts

100% Statements 14/14
100% Branches 2/2
100% Functions 4/4
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 331x 1x             1x                         1x       64x         29x 7x  
enum _OptionType {
  Some, None,
}
 
/**
 * @deprecated
 * to check for type use `isNone` or `isSome`
 */
export const OptionType = _OptionType;
 
export interface SomeType<E> {
  readonly type: _OptionType.Some;
  readonly value: E;
}
 
export interface NoneType {
  readonly  type: _OptionType.None;
}
 
export type Option<E> = NoneType | SomeType<E>;
 
export const None: NoneType = {type: _OptionType.None};
 
export type Chooser<E, F> = (e: E) => Option<F>;
 
export const Some = <E>(value: E): SomeType<E> => ({
  type: _OptionType.Some,
  value,
});
 
export const isSome = <E>(option: Option<E>): option is SomeType<E>  => option.type === _OptionType.Some;
export const isNone = <E>(option: Option<E>): option is NoneType  => option.type === _OptionType.None;