I'm stuck in understanding this piece of code
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T,>() => T extends Y ? 1 : 2
? true
: false;
I know you can check equality of two types with Equal type, but i can't understand what is T for and how it will interpret?