import { never } from "./checks/never"; import type { GetType } from "./get-type"; import type { Type } from "./type"; export function union>>( ...types: Types ): Type>; export function union>>( types: Types ): Type>; export function union( ...args: Type[] | [ ReadonlyArray> ] ): Type { const types: ReadonlyArray> = args.length === 1 && Array.isArray(args[0]) ? args[0] : args as Type[]; if(types.length === 0) return never; let result = types[0]; for(const type of types.slice(1)) { result = result.or(type); } return result; }