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?].
| Grupo | Tipos Utilitários |
|---|---|
| Tipo | Tipo |
| Modo strict | Nã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
| T | Um 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.
🏷️ Tipos Utilitários Relacionados
💡 Casos relacionados
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).