import { Push, Length } from '../../array'; import { Reverse } from '../../boolean'; import { If } from '../../commonness/If'; import { Extends } from '../../commonness/Extends'; import { Tuple } from '../../primitive'; import { ToString } from '../ToString'; type NumberToArray = []> = S extends `${infer Digit extends number}${infer Rest}` ? NumberToArray> : S extends `-${infer Digit extends number}${infer Rest}` ? NumberToArray> : T; type CompareDigit = Length extends T ? Length extends U ? 'equal' : 'less' : Length extends U ? 'greater' : CompareDigit, Push>; type GreaterThanHelper = NumberToArray>, B extends Tuple = NumberToArray>, Index extends Tuple = []> = CompareDigit, Length> extends 'greater' ? true : CompareDigit, Length> extends 'less' ? false : CompareDigit], B[Length]> extends 'greater' ? true : CompareDigit], B[Length]> extends 'less' ? false : Length> extends Length | Length ? false : GreaterThanHelper>; /** * * Type that checks if the first number is greater than the second number * * 두 숫자를 비교하여 첫 번째 숫자가 두 번째 숫자보다 큰지 확인하는 타입 * * @param T 비교할 첫 번째 숫자 / First number to compare * * @param U 비교할 두 번째 숫자 / Second number to compare * * @returns T > U 여부를 나타내는 boolean / boolean representing whether T > U * * @example * * type cases = [ * Expect, true>>, * Expect, true>>, * Expect, true>>, * Expect, false>>, * Expect, false>>, * ] * * @link https://www.utilscript.site/docs/usage-number/greater-than * */ export type GreaterThan = If, If, Reverse>, false>, If, true, GreaterThanHelper>>; export {};