export type Opaque = {} | void | null | undefined; export type Option = T | null; // tslint:disable-line export type Maybe = Option | undefined; // tslint:disable-line export function unwrap(val: Maybe): T { if (val === null || val === undefined) throw new Error(`Expected value to be present`); return val; } export function expect(val: Maybe, message: string): T { if (val === null || val === undefined) throw new Error(message); return val; } export function unreachable(): Error { return new Error('unreachable'); }