export type MergeRecord = { readonly [k in keyof K | keyof H]: k extends keyof K ? K[k] : k extends keyof H ? H[k] : never } extends infer X ? X : never export type ForcedArray = A extends readonly any[] ? A : [] export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( k: infer I ) => void ? I : never export type EnforceNonEmptyRecord = keyof R extends never ? never : R export type RefinementWithIndex = (i: I, a: A) => a is B export type PredicateWithIndex = (i: I, a: A) => boolean export type Erase = R & K extends K & infer R1 ? R1 : R export interface Spreadable extends Record {} export type ESArray = Array export type ESReadonlyArray = ReadonlyArray export const ESArray = Array export type ESIterable = globalThis.Iterable export type IsInt = N & (`${N}` extends `${bigint}` ? N : never) declare global { /** * @tsplus type number */ export interface Number {} } export type OrElse = [A] extends [never] ? B : A