Уроки модуля (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. Параметры по умолчанию
Создайте функцию с именем power, которая принимает основание (число) и показатель степени (число со значением по умолчанию 2). Функция должна вычислить и вернуть значение основания, возведенного в степень (используйте Math.pow).
Показать подсказку
Используйте базу: число и показатель степени: число = 2 в сигнатуре функции.
Решение доступно после 3 попыток
Упражнение 3. Сигнатура функции
Определите псевдоним типа с именем BinaryOp, который описывает функцию, принимающую два числовых параметра и возвращающую число. Затем объявите константу с именем sum типа BinaryOp, реализующую сложение.
Показать подсказку
Синтаксис типа функции: (a: число, b: число) => число.
Решение доступно после 3 попыток
Упражнение 4. Функция обратного вызова
Создайте функцию с именемprocessItems, которая принимает два параметра: items (массив строк) и обратный вызов (функция, которая принимает одну строку и ничего не возвращает, т. е. void). Функция должна выполнить цикл for...of для каждого элемента в items и передать его обратному вызову.
Показать подсказку
Объявите подпись какprocessItems(items: string[], callback: (item: string) => void): void и используйте цикл для вызова обратного вызова.
Решение доступно после 3 попыток