Перейти до основного вмісту
Модуль 3 · Урок 1 із 25/14 у курсі~12 min
Модульні уроки (1/2)

Типізовані функції

Функції є основними будівельними блоками будь-якої програми JavaScript. У TypeScript ми можемо точно анотувати як вхідні аргументи, так і значення, що повертаються, що робить наші інтерфейси та виклики функцій надзвичайно безпечними та самодокументованими.


Додаткові параметри та параметри за замовчуванням

У JavaScript кожен параметр є необов’язковим і за умовчанням має значення undefined, якщо його опустити. У TypeScript за замовчуванням кожен оголошений параметр є обов’язковим.

Однак ми можемо визначити додаткові параметри за допомогою знака питання (?) або вказати значення за замовчуванням безпосередньо в сигнатурі функції.

1. Необов'язкові параметри

Необов’язкові параметри мають бути розташовані після усіх обов’язкових параметрів:

TS
function greetUser(name: string, title?: string): string {
  if (title) {
    return `Good morning ${title} ${name}`;
  }
  return `Hello ${name}`;
}

2. Параметри за замовчуванням

Якщо для параметра зі значенням за замовчуванням не надано значення, TypeScript визначає його тип і призначає вказане значення за замовчуванням:

TS
function greetUserWithDefault(name: string, prefix: string = 'Hello'): string {
  return `${prefix} ${name}`;
}

Параметри відпочинку (...args)

Якщо ми хочемо прийняти змінну кількість аргументів, ми можемо використовувати оператор rest. У TypeScript ці параметри потрібно вводити як масив:

TS
function sumAll(message: string, ...numbers: number[]): string {
  const total = numbers.reduce((sum, n) => sum + n, 0);
  return `${message} ${total}`;
}

Типи функцій (підписи викликів)

Ми можемо визначити тип функції незалежно, а потім повторно використовувати його в оголошеннях змінних або аргументах зворотного виклику:

TS
// Define function type using type alias
type MathOperation = (a: number, b: number) => number;

const add: MathOperation = (x, y) => x + y;
const multiply: MathOperation = (x, y) => x * y;

Цей підхід важливий під час передачі функцій як аргументів іншим функціям (зворотні виклики).


Спробуйте самі

Вправа 1: необов’язкові параметри

вправи#ts.m3.l1.e1
Спроби: 0Завантаження…

Створіть функцію під назвою formatName, яка приймає параметр firstName (рядок) і додатковий параметр lastName (рядок). Якщо вказано прізвище, поверніть «firstName lastName», інакше поверніть лише «firstName».

Завантаження редактора…
Показати підказку

Пам’ятайте, що необов’язковий параметр оголошується за допомогою рядка LastName?: після обов’язкового.

Рішення доступне після 3 спроб

Вправа 2: Параметри за замовчуванням

вправи#ts.m3.l1.e2
Спроби: 0Завантаження…

Створіть функцію під назвою «потужність», яка приймає основу (число) і експоненту (число зі значенням за замовчуванням 2). Функція має обчислити та повернути значення основи, піднесене до експоненти (використовуйте Math.pow).

Завантаження редактора…
Показати підказку

Використовуйте основу: число та експоненту: число = 2 у сигнатурі функції.

Рішення доступне після 3 спроб

Вправа 3: Підпис функції

вправи#ts.m3.l1.e3
Спроби: 0Завантаження…

Визначте псевдонім типу BinaryOp, який описує функцію, яка приймає два числові параметри та повертає число. Далі оголосите константу з назвою sum типу BinaryOp, яка реалізує додавання.

Завантаження редактора…
Показати підказку

Синтаксис для типу функції такий: (a: число, b: число) => число.

Рішення доступне після 3 спроб

Вправа 4: Функція зворотного виклику

вправи#ts.m3.l1.e4
Спроби: 0Завантаження…

Створіть функцію під назвою processItems, яка приймає два параметри: items (масив рядків) і callback (функція, яка приймає один рядок і не повертає нічого, тобто void). Функція повинна виконувати цикл for...of над кожним елементом у items і передавати його зворотному виклику.

Завантаження редактора…
Показати підказку

Оголошіть підпис як processItems(items: string[], callback: (item: string) => void): void і використовуйте цикл для виклику зворотного виклику.

Рішення доступне після 3 спроб