type Reverse<T, R> = (T extends [infer F, ...infer L] ? () => Reverse<L, [F, ...R]> : () => R) extends (...args: any) => infer R ? R : any
reverse a Tuple
reverse a Tuple