A method to perform branching while inferring types
TS Recursive Conditional Type
define type recursive conditional
TypeScript 4.5 performs some tail-recursion elimination on conditional types
it doesn't error even with deep recursion and optimizes by avoiding intermediate instantiations