export type Assert = T export type IsEqual = (() => T extends A ? 1 : 2) extends () => T extends B ? 1 : 2 ? true : false export type Simplify = { [K in keyof T]: T[K] } & {} /** * Forces TypeScript to distribute a conditional type over a union by * substituting `T extends ForceDistributive ? ... : ...` for the more cryptic * `T extends any ? ... : ...` pattern. */ export type ForceDistributive = any /** Distributive utility for creating mutable versions of readonly union types. */ export type Mutable = T extends ForceDistributive ? { -readonly [K in keyof T]: T[K] } : never