Типизация 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 гарантирует, что все аргументы, переданные в остаточный параметр, соответствуют указанному типу массива, предоставляя вам гибкость использования переменного количества аргументов с безопасностью статической типизации.
Задание
ЛегкоСоздайте функцию с именем 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"));В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в TypeScript
1Начало работы с TS
Что такое TypeScript?Зачем использовать TypeScript?Ваш первый код на TypeScriptПроцесс компиляции и ошибкиИтоги: Введение в TS4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация стрелочных функцийТип возвращаемого значения 'void'Необязательные параметры с '?'Значения параметров по умолчаниюТипизация Rest-параметровОпределение типов функцийИтоги: Создание типизированных функций2Основные типы
Базовые типы: str, num, booleanТип 'any': лазейкаТип 'unknown'Работа с 'null' и 'undef'Вывод типов в действииЯвные аннотации типовИтоги: Практика по основным типам5Типы: псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения ('|')Работа с типами объединенияЛитеральные типыТипы пересечения ('&')Комбинирование псевдонимов типовИтоги: продвинутые комбинации типов3Структуры данных: массивы и кортежи
Типизированные массивыМодификатор 'readonly' для массивовЧто такое кортеж?Объявление кортежей и доступ к нимДеструктуризация кортежейКортежи readonlyМногомерные типизированные массивыОператор spread с массивамиИтоги: массивы и кортежиПотренируйтесь самостоятельно: Онлайн-компилятор JavaScript