Parameters<T> Parameters (com ConstructorParameters / InstanceType)

Última atualização: 2026-10-22

Parameters<T> Parameters (com ConstructorParameters / InstanceType)

Parameters<T> extrai a lista de parâmetros de um tipo de função T como um tipo tupla. Com ele, é possível armazenar, passar e encaminhar "um pacote de argumentos" sem escrever tuplas à mão como [string, number, string?].

GrupoTipos Utilitários
TipoTipo
Modo strictNão necessário

ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.

📝 Sintaxe

type Parameters<T extends (...args: any) => any> =
  T extends (...args: infer P) => any ? P : never;

// Uso
type SessionArgs = Parameters<typeof createSession>;  // [string, number, string?]

⚙️ Parâmetros

TUm tipo de função; na prática, quase sempre obtido via typeof fn

Retorno:Um tipo tupla correspondendo aos parâmetros de T um a um (incluindo opcionais e rest); never se T não é um tipo de função.

▶ Exemplo

Edite o código abaixo e clique em Testar para ver o resultado transpilado:

Saída:

session(u-7, 3600s, default)
retry -> session(u-7, 60s, admin)

(Saída de execução após a transpilação; no nível de tipo, SessionArgs é [string, number, string?] — mude a assinatura de createSession e a tupla acompanha)

💡 Observações

ℹ️ Info A implementação também se apoia em infer, capturando a lista de parâmetros como a tupla P. Parâmetros opcionais aparecem como string? na tupla e parâmetros rest como ...string[].
⚠️ Atenção Como ReturnType, em funções sobrecarregadas apenas a lista de parâmetros da última sobrecarga é extraída.
💡 Dica Ferramentas da mesma família: ConstructorParameters<T> para parâmetros de construtor, InstanceType<T> para tipos de instância de classe, ThisParameterType<T> para tipos this. Essa família brilha ao envolver APIs de terceiros.
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P A tupla extraída por Parameters pode ser espalhada numa chamada?
R Sim — esse é o seu uso de cartão de visita: createSession(...args). O TS verifica posição, quantidade e tipos contra a tupla; aridade errada é um erro de compilação.
P Como acrescentar um parâmetro ao resultado de Parameters?
R Tuplas se concatenam: type Logged<P extends any[]> = [...P, requestId: string]. Combinado com Parameters, isso constrói assinaturas "argumentos originais mais extras" — um recurso clássico de decoradores e middleware.
P Parameters<typeof Class> funciona?
R Uma classe é ela própria um construtor, e typeof Class carrega uma assinatura de construção. Use o dedicado ConstructorParameters<typeof Class> para argumentos de construtor; Parameters simples produz never (nenhuma assinatura de chamada simples corresponde).
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%