ExpertiDict

TypeScript · Avançado · Inglês · Técnico

infer

/ɪnˈfɝ/palavra-chave

Palavra-chave usada dentro de um tipo condicional para capturar parte de um tipo em uma nova variável de tipo, como em T extends Promise<infer U> ? U : never.

Onde usar

É o que permite extrair tipos de dentro de outros: o retorno de funções, o elemento de arrays, o valor de Promises. ReturnType e Awaited são escritos com ela.

Em código

type Ret<F> = F extends (...a: any) => infer R
  ? R
  : never;
type A = Ret<() => string>; // string
type El<T> = T extends (infer I)[] ? I : T;
type B = El<number[]>;      // number

Exemplos

Use infer to pull the element type out of the array.

Use infer para tirar o tipo do elemento do array.

ReturnType is just a conditional type with infer.

ReturnType é só um tipo condicional com infer.

Cuidado

O infer só é permitido na cláusula extends de um tipo condicional, e a variável capturada só existe no ramo verdadeiro.

Veja também

Todos os termos de TypeScript