infer é usada dentro de um conditional type para capturar (extrair) um tipo de dentro de outro tipo para uma nova variável de tipo que você pode então usar. É correspondência de padrões para tipos.
<T> = T (infer U)[] ? U : ;
A = <[]>;
B = <[]>;
