...rest: T[] Parâmetros rest

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

...rest: T[] Parâmetros rest

Parâmetros rest (...scores: number[]) coletam todos os argumentos restantes em um array de verdade, permitindo que a função aceite qualquer quantidade de argumentos do mesmo tipo — o substituto type-safe do arguments.

GrupoFunções e Classes
TipoSintaxe
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

function average(...scores: number[]): number {
  if (scores.length === 0) return 0;
  return scores.reduce((sum, s) => sum + s, 0) / scores.length;
}

// Parâmetros posicionais + resto: o parâmetro de resto deve ser o último
function logRequest(method: string, ...fields: string[]): void;

⚙️ Parâmetros

...scores: number[]Parâmetro rest: todos os argumentos restantes são coletados em um number[]; deve ser o último item da lista

Retorno:Igual às funções comuns: anote explicitamente ou infira do corpo; um parâmetro rest não muda nada na tipagem do retorno.

▶ Exemplo

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

Saída:

84.3
97.5
0

(Saída de execução após a transpilação; average("90") gera um erro de compilação — os elementos do rest devem ser number)

💡 Observações

ℹ️ Info Parâmetros rest são arrays reais em tempo de execução — map/filter/reduce funcionam diretamente. Muito mais seguros que o antigo objeto arguments (semelhante a array e sem tipos).
⚠️ Atenção ...args: any[] descarta todas as informações de tipo dos elementos; prefira tipos de elemento concretos, ou uma tupla genérica ...args: T para manter cada posição tipada.
💡 Dica Tipos tupla podem fixar parâmetros rest: ...args: [name: string, retries: number] significa que o argumento 1 deve ser string e o argumento 2, number.
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Qual a diferença entre ...scores: number[] e scores: number[]?
R O último é um único parâmetro array: average([90, 85]). O primeiro aceita qualquer quantidade de argumentos number: average(90, 85). Se quem chama já tem um array em mãos, um parâmetro array comum fica melhor.
P Um parâmetro rest pode ficar no meio?
R Não. Ele deve vir por último — "rest", por definição, coleta tudo que vem depois; o compilador o rejeita em qualquer outra posição.
P Para que servem parâmetros rest genéricos?
R <T extends any[]>(...args: T) coleta os argumentos como uma tupla, preservando o tipo de cada posição — o truque essencial para utilitários wrap/decorate que repassam argumentos.
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%