Модульні уроки (1/2)
Типізовані функції
Функції є основними будівельними блоками будь-якої програми JavaScript. У TypeScript ми можемо точно анотувати як вхідні аргументи, так і значення, що повертаються, що робить наші інтерфейси та виклики функцій надзвичайно безпечними та самодокументованими.
Додаткові параметри та параметри за замовчуванням
У JavaScript кожен параметр є необов’язковим і за умовчанням має значення undefined, якщо його опустити. У TypeScript за замовчуванням кожен оголошений параметр є обов’язковим.
Однак ми можемо визначити додаткові параметри за допомогою знака питання (?) або вказати значення за замовчуванням безпосередньо в сигнатурі функції.
1. Необов'язкові параметри
Необов’язкові параметри мають бути розташовані після усіх обов’язкових параметрів:
function greetUser(name: string, title?: string): string {
if (title) {
return `Good morning ${title} ${name}`;
}
return `Hello ${name}`;
}2. Параметри за замовчуванням
Якщо для параметра зі значенням за замовчуванням не надано значення, TypeScript визначає його тип і призначає вказане значення за замовчуванням:
function greetUserWithDefault(name: string, prefix: string = 'Hello'): string {
return `${prefix} ${name}`;
}Параметри відпочинку (...args)
Якщо ми хочемо прийняти змінну кількість аргументів, ми можемо використовувати оператор rest. У TypeScript ці параметри потрібно вводити як масив:
function sumAll(message: string, ...numbers: number[]): string {
const total = numbers.reduce((sum, n) => sum + n, 0);
return `${message} ${total}`;
}Типи функцій (підписи викликів)
Ми можемо визначити тип функції незалежно, а потім повторно використовувати його в оголошеннях змінних або аргументах зворотного виклику:
// 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: необов’язкові параметри
Створіть функцію під назвою formatName, яка приймає параметр firstName (рядок) і додатковий параметр lastName (рядок). Якщо вказано прізвище, поверніть «firstName lastName», інакше поверніть лише «firstName».
Показати підказку
Пам’ятайте, що необов’язковий параметр оголошується за допомогою рядка LastName?: після обов’язкового.
Рішення доступне після 3 спроб
Вправа 2: Параметри за замовчуванням
Створіть функцію під назвою «потужність», яка приймає основу (число) і експоненту (число зі значенням за замовчуванням 2). Функція має обчислити та повернути значення основи, піднесене до експоненти (використовуйте Math.pow).
Показати підказку
Використовуйте основу: число та експоненту: число = 2 у сигнатурі функції.
Рішення доступне після 3 спроб
Вправа 3: Підпис функції
Визначте псевдонім типу BinaryOp, який описує функцію, яка приймає два числові параметри та повертає число. Далі оголосите константу з назвою sum типу BinaryOp, яка реалізує додавання.
Показати підказку
Синтаксис для типу функції такий: (a: число, b: число) => число.
Рішення доступне після 3 спроб
Вправа 4: Функція зворотного виклику
Створіть функцію під назвою processItems, яка приймає два параметри: items (масив рядків) і callback (функція, яка приймає один рядок і не повертає нічого, тобто void). Функція повинна виконувати цикл for...of над кожним елементом у items і передавати його зворотному виклику.
Показати підказку
Оголошіть підпис як processItems(items: string[], callback: (item: string) => void): void і використовуйте цикл для виклику зворотного виклику.
Рішення доступне після 3 спроб