Типизация параметров и возвращаемого значения
Описываем «вход» и «выход» функции, чтобы компилятор проверял вызовы и тело.
Сигнатура функции в TypeScript задаёт типы параметров и тип возвращаемого значения:
(a: number): string.
Типы параметров
Каждому параметру указывают тип через двоеточие. Теперь функцию нельзя вызвать с неподходящим аргументом:
function repeat(text: string, times: number): string {
return text.repeat(times);
}
repeat("ab", 3); // "ababab"
repeat("ab", "3"); // Ошибка: Argument of type 'string' is not assignable to parameter of type 'number'.
Это защищает оба конца: и вызывающий код (нельзя передать мусор), и тело функции (внутри times точно число, доступны числовые методы).
Тип возвращаемого значения
Тип после скобок описывает, что функция возвращает. Часто его можно не писать — TypeScript выведет сам. Но явное указание полезно: компилятор проверит, что тело действительно возвращает обещанное.
function getArea(width: number, height: number): number {
return width * height; // ок: вернули число
}
function broken(x: number): number {
// забыли return
}
// Ошибка: Function lacks ending return statement and return type does not include 'undefined'.
Без аннотации возврата вторая ошибка не всплыла бы здесь — она бы проявилась позже, там, где результатом попытались воспользоваться. Явный тип ловит проблему в самой функции.
Проверяемый пример
function celsiusToFahrenheit(c) {
return c * 9 / 5 + 32;
}
console.log(celsiusToFahrenheit(0));
console.log(celsiusToFahrenheit(100));
console.log(celsiusToFahrenheit(-40));
Вывод:
32 212 -40
Тип void
Если функция ничего не возвращает (выполняет действие — печатает, сохраняет), её тип возврата — void:
function log(message: string): void {
console.log("[LOG]", message);
// ничего не возвращаем
}
void — это «функция отработала, но значения нет». Технически она возвращает undefined, но писать return не нужно. Попытка использовать результат такой функции бессмысленна:
const x = log("привет"); // x имеет тип void — использовать нечего
void против never
| Тип | Смысл |
void | функция завершилась, но значения нет |
never | функция вообще не завершается штатно (бросает/зацикливается) |
Итог
- Типы параметров защищают и вызов, и тело функции от неподходящих данных.
- Явный тип возврата заставляет компилятор проверить, что функция реально его возвращает.
void— тип функций без возвращаемого значения (действие ради побочного эффекта).