export type Present = Exclude; export type Nullable = T | null; export type Optional = T | undefined; export type Maybe = Nullable | Optional; export type FIXME = T; export type Dict = Record; export type DictValue = D extends Dict ? V : never; export interface Unique { 'Unique [id=ada0f31f-27f7-4ab0-bc03-0005387c9d5f]': T; } export type Recast = (T & U) | U; /** * This is needed because the normal IteratorResult in the TypeScript * standard library is generic over the value in each tick and not over * the return value. It represents a standard ECMAScript IteratorResult. */ export type RichIteratorResult = | { done: false; value: Tick; } | { done: true; value: Return; }; export type Destroyable = object; export type Destructor = (destroyable: T) => void;