Elementos Rest em Tuplas
Utilize elementos rest dentro de tipos de tupla.
Elementos Rest em Tuplas é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Tuplas de comprimento variável
Normalmente, as tuplas têm comprimento fixo, mas um elemento de resto permite que uma posição absorva qualquer quantidade de itens. Isso modela dados que são parcialmente fixos e parcialmente variáveis.
Um elemento de resto final
Escreva [string, ...number[]] para indicar: uma cadeia de caracteres, seguida por zero ou mais números. A primeira posição é fixa; o restante pode crescer livremente.
type Row = [string, ...number[]]
const r: Row = ["scores", 9, 8, 7]
console.log(r[0], r.length) // scores 4A parte fixa é obrigatória
Os elementos fixos iniciais precisam estar presentes. A parte restante pode estar vazia, mas as posições fixas não podem ser ignoradas.
type Row = [string, ...number[]]
const min: Row = ["label"] // ok, zero numbers
// const bad: Row = [] // Error: missing string
console.log(min)Elemento de resto inicial
Um elemento de resto também pode vir primeiro, com elementos fixos depois dele. Isso modela uma parte inicial variável seguida por uma parte final fixa.
type Trailing = [...number[], boolean]
const t: Trailing = [1, 2, 3, true]
console.log(t[t.length - 1]) // trueElemento de resto no meio
O resto pode ficar no meio, entre elementos fixos iniciais e finais. O TypeScript determina quais posições são fixas em cada extremidade.
type Middle = [string, ...number[], boolean]
const m: Middle = ["start", 1, 2, false]
console.log(m[0], m[m.length - 1]) // start falseApenas um resto por tupla
Uma tupla pode conter no máximo um elemento de resto. Dois elementos de resto tornariam as posições dos elementos ambíguas, por isso não são permitidos.
// type Bad = [...string[], ...number[]] // Error: only one rest allowed
type Ok = [string, ...number[]]
const o: Ok = ["x", 1]
console.log(o)Desestruturando uma tupla com resto
A desestruturação se alinha perfeitamente aos elementos de resto de uma tupla. As vinculações fixas ocupam as posições fixas; uma vinculação de resto captura a parte variável como um vetor tipado.
type Row = [string, ...number[]]
const row: Row = ["scores", 9, 8]
const [label, ...values] = row
console.log(label, values) // scores [9, 8]Elementos de tupla rotulados
Você pode nomear as posições de uma tupla para fins de documentação. Os rótulos aparecem nas dicas de ferramenta e nas assinaturas, mas não alteram os valores em tempo de execução.
type Range = [start: number, end: number]
const span: Range = [0, 10]
console.log(span[0], span[1]) // 0 10Rótulos em elementos de resto
Os elementos de resto também podem receber rótulos, o que é especialmente útil nas tuplas de parâmetros de funções para produzir dicas mais claras.
type Args = [command: string, ...flags: string[]]
const a: Args = ["build", "--watch", "--minify"]
console.log(a[0], a.slice(1))Tuplas com resto como listas de parâmetros
Uma tupla com um elemento de resto pode descrever a lista de parâmetros de uma função, permitindo assinaturas precisas com uma parte fixa seguida por parâmetros variáveis por meio da propagação.
type Params = [name: string, ...scores: number[]]
function report(...args: Params): string {
const [name, ...scores] = args
return name + ": " + scores.join(",")
}
console.log(report("Ada", 9, 8))Por que as tuplas com resto são importantes
As tuplas com resto expressam estruturas que vetores comuns não conseguem representar: um cabeçalho obrigatório com um corpo variável, um corpo variável com um rodapé obrigatório ou ambos. Elas são a base da tipagem de funções variádicas.
type CSVRow = [id: number, ...fields: string[]]
const row: CSVRow = [1, "Ada", "Engineer"]
console.log(row[0], row.slice(1))Verificação rápida
Teste sua compreensão dos elementos de resto de tuplas.
Recapitulação
Um elemento de resto de tupla (...T[]) permite que uma posição absorva qualquer quantidade de itens, enquanto os elementos fixos iniciais e finais continuam obrigatórios. O resto pode estar no final, no início ou no meio, mas cada tupla pode ter apenas um elemento de resto. A desestruturação acompanha essas estruturas, os rótulos acrescentam dicas claras e as tuplas com resto são a base da tipagem de funções variádicas.
Perguntas Frequentes
A aula “Elementos Rest em Tuplas” é grátis?
Sim — o texto completo de “Elementos Rest em Tuplas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Elementos Rest em Tuplas”?
Utilize elementos rest dentro de tipos de tupla. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Elementos Rest em Tuplas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Parâmetros Rest em Funções
- Spread em Matrizes e Objetos
- Elementos Rest em Tuplas
- Definindo Tipos de Funções Variádicas