Menu
Coddy logo textTech

Необязательные параметры с '?'

Часть раздела Введение в 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, поэтому вам следует проверить их наличие перед использованием.

challenge icon

Задание

Легко

Создайте функцию с именем 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 с правильными аннотациями типов

// Протестируйте функции и выведите результаты
quiz iconПроверьте себя

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

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

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