import { Extends } from '../../commonness/Extends'; import { GreaterThan } from '../../number/GreaterThan'; import { Tuple } from '../../primitive/Tuple'; /** * * Type to find the minimum value in a tuple of numbers * * 숫자 튜플에서 최소값을 찾는 타입 * * @param T Tuple of numbers / 숫자 튜플 * * @returns Minimum value in the tuple / 튜플 내 최소값 * * @example * * type cases = [ * Expect, 1>>, * Expect, 2>>, * Expect, 1>>, * ] * * @link https://www.utilscript.site/docs/usage-array/min * */ export type Min, R extends number = T[0]> = T extends readonly [ infer First extends number, ...infer Rest extends Tuple ] ? GreaterThan extends true ? Min : Min : Extends extends true ? never : R;