У функции типизируют и параметры, и возвращаемое значение:
function sum(a: number, b: number): number { return a + b; }
Здесь a и b обязаны быть числами, а функция обязана вернуть число. Если вернуть строку — ошибка компиляции.
Необязательный параметр помечают знаком вопроса, значение по умолчанию — как в JS:
function greet(name: string, loud?: boolean): string { return loud ? name.toUpperCase() : name; }
Стрелочные функции типизируют так же:
const square = (x: number): number => x * x;
Если функция ничего не возвращает, её тип результата — void:
function log(msg: string): void { console.log(msg); }
Теперь редактор знает, что и куда можно передавать, и подскажет при вызове.