TypeScript - Параметры по умолчанию

Здравствуйте, будущие супергерои кодирования! Сегодня мы окунемся в чудесный мир TypeScript и рассмотрим функцию, которая значительно упростит вашу жизнь как программиста: параметры по умолчанию. К концу этого урока вы будете виртуозно использовать этот мощный инструмент. Итак, начнем!

TypeScript - Default Parameters

Что такое параметры по умолчанию?

Представьте, что вы повар ( потерпите, мы скоро вернемся к программированию!). Каждый день вы готовите вкусный суп. В большинстве случаев вы добавляете соль в суп. Но иногда клиент может попросить без соли. Не было бы замечательно, если бы у вас был рецепт, который автоматически включает соль,除非另有说明? Именно так работают параметры по умолчанию в программировании!

В TypeScript параметры по умолчанию позволяют вам задать значение по умолчанию для параметра функции. Если функция вызывается без предоставления значения для этого параметра, используется значение по умолчанию.

Давайте рассмотрим простой пример:

function greet(name: string = "World") {
console.log(`Hello, ${name}!`);
}

greet(); // Вывод: Hello, World!
greet("Alice"); // Вывод: Hello, Alice!

В этом примере "World" является параметром по умолчанию для name. Если мы вызываем greet() без аргументов, он использует "World" по умолчанию. Но если мы предоставляем имя, например "Alice", он использует его вместо этого.

Why Use Default Parameters?

  1. Гибкость: Они делают ваши функции более гибкими, позволяя им работать с или без определенных аргументов.
  2. Чистый код: Они уменьшают необходимость использования условных операторов внутри вашей функции для проверки, был ли предоставлен параметр.
  3. Улучшенная читаемость: Параметры по умолчанию делают очевидным, какие expected "нормальные" значения для функции.

Как использовать параметры по умолчанию

Давайте углубимся с помощью больше примеров:

Основное использование

function calculateArea(width: number = 10, height: number = 5) {
return width * height;
}

console.log(calculateArea()); // Вывод: 50
console.log(calculateArea(20)); // Вывод: 100
console.log(calculateArea(7, 3)); // Вывод: 21

В этом примере у обоих width и height есть значения по умолчанию. Мы можем вызывать функцию без аргументов, с одним аргументом (который будет использоваться для width), или с обоими аргументами.

Использование выражений в качестве значений по умолчанию

Параметры по умолчанию могут быть выражениями, а не только простыми значениями:

function getRandomGreeting(name: string = "friend", time: Date = new Date()) {
const greetings = ["Hello", "Hi", "Hey", "Howdy"];
const randomGreeting = greetings[Math.floor(Math.random() * greetings.length)];
return `${randomGreeting}, ${name}! It's ${time.toLocaleTimeString()} now.`;
}

console.log(getRandomGreeting()); // Вывод: например, "Hey, friend! It's 3:45:30 PM now."
console.log(getRandomGreeting("Alice")); // Вывод: например, "Hello, Alice! It's 3:45:35 PM now."

Здесь мы используем new Date() в качестве значения по умолчанию для time, что даст нам текущую дату и время при вызове функции.

Параметры по умолчанию с другими типами

Параметры по умолчанию работают со всеми типами в TypeScript:

function createUser(
name: string = "Anonymous",
age: number = 0,
isAdmin: boolean = false,
hobbies: string[] = []
) {
return { name, age, isAdmin, hobbies };
}

console.log(createUser());
// Вывод: { name: "Anonymous", age: 0, isAdmin: false, hobbies: [] }

console.log(createUser("Alice", 30, true, ["reading", "coding"]));
// Вывод: { name: "Alice", age: 30, isAdmin: true, hobbies: ["reading", "coding"] }

Этот пример показывает, как параметры по умолчанию можно использовать с разными типами, включая массивы и булевы значения.

Необязательные параметры против параметров по умолчанию

Теперь вы, возможно, подумываете: "Подождите минутку! Я слышал о необязательных параметрах. Как они отличаются от параметров по умолчанию?" Отличный вопрос! Давайте разберем это:

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

Необязательные параметры помечены ? и позволяют вызывать функцию без значения для этого параметра.

function greetOptional(name?: string) {
if (name) {
console.log(`Hello, ${name}!`);
} else {
console.log("Hello, stranger!");
}
}

greetOptional(); // Вывод: Hello, stranger!
greetOptional("Bob"); // Вывод: Hello, Bob!

Параметры по умолчанию

Параметры по умолчанию предоставляют значение по умолчанию, которое будет использоваться, если аргумент не предоставлен.

function greetDefault(name: string = "stranger") {
console.log(`Hello, ${name}!`);
}

greetDefault(); // Вывод: Hello, stranger!
greetDefault("Bob"); // Вывод: Hello, Bob!

Основные различия

Функция Необязательные параметры Параметры по умолчанию
Синтаксис Использует ? после имени параметра Использует = value после типа параметра
Когда нет аргумента Параметр равен undefined Параметр использует значение по умолчанию
Необходимость в проверках на null Часто требует проверок в теле функции Не требует дополнительных проверок
Ясность намерений Менее очевидно, что происходит, если параметр опущен Clearly показывает поведение по умолчанию

В общем, параметры по умолчанию часто более удобны и приводят к более чистому коду, так как они устраняют необходимость проверки на null внутри тела функции.

Лучшие практики использования параметров по умолчанию

  1. Используйте значимые значения по умолчанию: Выбирайте значения по умолчанию, которые имеют смысл для большинства случаев использования вашей функции.
  2. Документируйте ваши значения по умолчанию: Даже если значение по умолчанию находится в коде, полезно упомянуть его в документации функции.
  3. Будьте осторожны с изменяемыми значениями по умолчанию: Избегайте использования изменяемых объектов в качестве параметров по умолчанию, так как это может привести к нежелательному поведению.
  4. помните про undefined: Помните, что undefined вызовет использование значения по умолчанию, но null нет.
function exampleBestPractices(
requiredParam: string,
optionalParam: string = "default value",
anotherOptional: number = 42
) {
// Тело функции
}

Заключение

И вот мы и добрались до конца,朋友们! Вы только что повысили свои навыки TypeScript, освоив параметры по умолчанию. Помните, как и любой инструмент в программировании, параметры по умолчанию наиболее эффективны, когда используются с умом. Они могут сделать ваш код более надежным, читаемым и гибким.

Продолжайте практиковаться, кодите и, самое главное, получайте удовольствие от работы с TypeScript. До следующего раза, счастливого кодирования!

Credits: Image by storyset