type Proxy = any[] type Pop = T extends [infer A, ...infer B] ? B : never type Push = T extends [...infer B] ? [any, ...B] : never type Add = [...T, ...V] type Double = [...T, ...T] type Get = A['length'] type AddOne = Push type SubOne = Pop type Zero = [] type InnerN = { 'true': V 'false': InnerN> }[Get extends T ? 'true' : 'false']; type LIMIT = 1 type N = InnerN; type n1 = N<44> type n2 = Double type n3 = Double type n4 = Double type n5 = Double type n6 = Double type n7 = Double type v = Get