Menu
Coddy logo textTech

Типизация Rest-параметров

Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy. Урок 27 из 73.

TypeScript предоставляет rest-параметры для элегантной обработки этого сценария при сохранении типобезопасности.

Остаточные параметры используют оператор расширения (...), за которым следует имя параметра и типизированный массив. Это собирает все оставшиеся аргументы в один параметр-массив:

function sum(...numbers: number[]): number {
  let total = 0;
  for (const num of numbers) {
    total += num;
  }
  return total;
}

// Можно вызвать с любым количеством аргументов
sum(1, 2);           // 3
sum(1, 2, 3, 4, 5);  // 15

Остаточный параметр (rest parameter) всегда должен быть последним параметром в сигнатуре функции. TypeScript гарантирует, что все аргументы, переданные в остаточный параметр, соответствуют указанному типу массива, предоставляя вам гибкость использования переменного количества аргументов с безопасностью статической типизации.

challenge icon

Задание

Легко

Создайте функцию с именем sumAll, которая использует rest-параметры для принятия любого количества числовых аргументов и возвращает их сумму в виде number. Функция должна иметь явную аннотацию типа возвращаемого значения.

Создайте еще одну функцию с именем findMaximum, которая использует rest-параметры для принятия любого количества числовых аргументов и возвращает наибольшее значение среди них в виде number. Функция должна иметь явную аннотацию типа возвращаемого значения.

Создайте третью функцию с именем concatenateStrings, которая принимает обязательный параметр separator типа string, за которым следуют rest-параметры, принимающие любое количество строковых аргументов. Функция должна возвращать все строковые аргументы, соединенные вместе с разделителем между ними. Функция должна иметь явную аннотацию типа возвращаемого значения string.

Протестируйте свои функции, вызвав их со следующими значениями и выведя результаты:

  • Вызовите sumAll с 5, 10 и 15
  • Вызовите sumAll с 1, 2, 3, 4 и 5
  • Вызовите findMaximum с 8, 3, 12 и 7
  • Вызовите findMaximum с 25 и 18
  • Вызовите concatenateStrings с "-" в качестве разделителя и "apple", "banana", "cherry"
  • Вызовите concatenateStrings с " | " в качестве разделителя и "red", "green", "blue", "yellow"

Выведите каждый результат на отдельной строке в указанном выше порядке.

Попробуйте сами

// TODO: Напишите ваш код здесь

// Создайте функцию sumAll с остаточными параметрами (rest parameters)


// Создайте функцию findMaximum с остаточными параметрами (rest parameters)


// Создайте функцию concatenateStrings с разделителем и остаточными параметрами (rest parameters)


// Протестируйте функции и выведите результаты
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"));
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в TypeScript

Потренируйтесь самостоятельно: Онлайн-компилятор JavaScript