Tipagem de Rest Parameters
Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 27 de 73.
O TypeScript fornece parâmetros rest para lidar com este cenário de forma elegante, mantendo a segurança de tipos.
Parâmetros rest usam o operador spread (...) seguido por um nome de parâmetro e um array tipado. Isso coleta todos os argumentos restantes em um único parâmetro de array:
function sum(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// Can be called with any number of arguments
sum(1, 2); // 3
sum(1, 2, 3, 4, 5); // 15O parâmetro rest deve ser sempre o último parâmetro na assinatura da função. O TypeScript garante que todos os argumentos passados para o parâmetro rest correspondam ao tipo de array especificado, oferecendo a você a flexibilidade de argumentos variáveis com a segurança da tipagem estática.
Desafio
FácilCrie uma função chamada sumAll que use parâmetros rest para aceitar qualquer número de argumentos numéricos e retorne a soma deles como um number. A função deve ter uma anotação explícita de tipo de retorno.
Crie outra função chamada findMaximum que use parâmetros rest para aceitar qualquer número de argumentos numéricos e retorne o maior valor entre eles como um number. A função deve ter uma anotação explícita de tipo de retorno.
Crie uma terceira função chamada concatenateStrings que receba um parâmetro obrigatório separator do tipo string, seguido por parâmetros rest que aceitem qualquer número de argumentos de string. A função deve retornar todos os argumentos de string unidos com o separador entre eles. A função deve ter uma anotação explícita de tipo de retorno de string.
Teste suas funções chamando-as com os seguintes valores e imprimindo os resultados:
- Chame
sumAllcom5,10e15 - Chame
sumAllcom1,2,3,4e5 - Chame
findMaximumcom8,3,12e7 - Chame
findMaximumcom25e18 - Chame
concatenateStringscom"-"como separador e"apple","banana","cherry" - Chame
concatenateStringscom" | "como separador e"red","green","blue","yellow"
Imprima cada resultado em uma linha separada na ordem especificada acima.
Experimente você mesmo
// TODO: Escreva seu código aqui
// Crie a função sumAll com parâmetros rest
// Crie a função findMaximum com parâmetros rest
// Crie a função concatenateStrings com separador e parâmetros rest
// Teste as funções e imprima os resultados
console.log(sumAll(5, 10, 15));
console.log(sumAll(1, 2, 3, 4, 5));
console.log(findMaximum(8, 3, 12, 7));
console.log(findMaximum(25, 18));
console.log(concatenateStrings("-", "apple", "banana", "cherry"));
console.log(concatenateStrings(" | ", "red", "green", "blue", "yellow"));Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Introdução ao TypeScript
1Primeiros Passos com TS
O que é TypeScript?Por que usar TypeScript?Seu Primeiro Código TypeScriptProcesso de Compilação e ErrosRecapitulação: Introdução ao TS4Trabalhando com Funções
Tipagem de Parâmetros e RetornosTipagem de Arrow FunctionsO Tipo de Retorno 'void'Parâmetros Opcionais com '?'Valores Padrão de ParâmetrosTipagem de Rest ParametersDefinindo Tipos de FunçõesRecapitulação: Criando Funções Tipadas2Tipos Principais
Tipos Básicos: str, num, booleanO Tipo 'any': Válvula de EscapeO Tipo 'unknown'Trabalhando com 'null' e 'undef'Inferência de Tipo na PráticaAnotações de Tipo ExplícitasRecapitulação: Prática de Tipos Principais5Tipos: Aliases, Uniões e Interseções
Aliases de Tipos para PrimitivosTipos de União ('|')Trabalhando com Tipos de UniãoTipos LiteraisTipos de Interseção ('&')Combinando Aliases de TiposRecapitulação: Combinações Avançadas de Tipos3Estrutura de Dados: Arrays e Tuplas
Arrays TipadosModificador 'readonly' para ArraysO que é uma Tupla?Declarando e Acessando TuplasDesestruturando TuplasTuplas ReadonlyArrays Tipados MultidimensionaisSpread Operator com ArraysRecapitulação: Arrays e TuplasPratique por conta própria: Compilador de JavaScript online