Необязательные параметры с '?'
Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy. Урок 25 из 73.
Иногда вам нужно создавать функции, в которых определенные параметры не всегда обязательны. TypeScript предоставляет синтаксис ? для пометки параметров как необязательных, что означает, что вызывающая сторона может выбирать, предоставлять их или нет при вызове функции.
Чтобы сделать параметр необязательным, добавьте вопросительный знак после имени параметра, но перед аннотацией типа:
function greet(name: string, greeting?: string): string {
if (greeting) {
return greeting + ", " + name;
}
return "Hello, " + name;
}В этом примере name является обязательным, в то время как greeting — необязательным. Вы можете вызвать эту функцию, передав только имя (greet("Alice")), или оба параметра (greet("Alice", "Good morning")). Внутри функции необязательные параметры имеют тип string | undefined, поэтому вам следует проверить их наличие перед использованием.
Задание
ЛегкоСоздайте функцию с именем createUserProfile, которая принимает два параметра: username типа string (обязательный) и displayName типа string (необязательный). Функция должна возвращать строку с явным указанием типа возвращаемого значения.
Если предоставлены оба параметра, функция должна возвращать: "Profile: [displayName] (@[username])"
Если предоставлено только имя пользователя, функция должна возвращать: "Profile: @[username]"
Создайте еще одну функцию с именем calculateDiscount, которая принимает два параметра: price типа number (обязательный) и membershipLevel типа string (необязательный). Функция должна возвращать число с явным указанием типа возвращаемого значения.
Если предоставлены оба параметра, функция должна возвращать цену, уменьшенную на 10% (умноженную на 0.9).
Если предоставлена только цена, функция должна возвращать исходную цену без изменений.
Протестируйте свои функции, вызвав их со следующими значениями и выведя результаты на экран:
- Вызовите
createUserProfileс"john_doe"и"John Doe" - Вызовите
createUserProfileтолько с"jane_smith" - Вызовите
calculateDiscountсо значениями100и"premium" - Вызовите
calculateDiscountтолько со значением75
Выведите каждый результат на отдельной строке в указанном выше порядке.
Попробуйте сами
// TODO: Напишите свой код здесь
// Создайте функцию createUserProfile с правильными аннотациями типов
// Создайте функцию calculateDiscount с правильными аннотациями типов
// Протестируйте функции и выведите результатыВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в TypeScript
1Начало работы с TS
Что такое TypeScript?Зачем использовать TypeScript?Ваш первый код на TypeScriptПроцесс компиляции и ошибкиИтоги: Введение в TS4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация стрелочных функцийТип возвращаемого значения 'void'Необязательные параметры с '?'Значения параметров по умолчаниюТипизация Rest-параметровОпределение типов функцийИтоги: Создание типизированных функций2Основные типы
Базовые типы: str, num, booleanТип 'any': лазейкаТип 'unknown'Работа с 'null' и 'undef'Вывод типов в действииЯвные аннотации типовИтоги: Практика по основным типам5Типы: псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения ('|')Работа с типами объединенияЛитеральные типыТипы пересечения ('&')Комбинирование псевдонимов типовИтоги: продвинутые комбинации типов3Структуры данных: массивы и кортежи
Типизированные массивыМодификатор 'readonly' для массивовЧто такое кортеж?Объявление кортежей и доступ к нимДеструктуризация кортежейКортежи readonlyМногомерные типизированные массивыОператор spread с массивамиИтоги: массивы и кортежиПотренируйтесь самостоятельно: Онлайн-компилятор JavaScript