Типы функций

«Каждая функция имеет тип, представляющий собой сочетание типов параметров и типа возвращаемого значения.»

Синтаксис типа функции

let sum = (x: number, y: number): number => x + y
// Тип: (x: number, y: number) => number

// Переменная с типом функции
let op: (x: number, y: number) => number

// Type alias
type BinaryOp = (a: number, b: number) => number
const multiply: BinaryOp = (a, b) => a * b

Функции обратного вызова

let mathOp = (
  x: number,
  y: number,
  operation: (a: number, b: number) => number
): number => {
  return operation(x, y)
}

mathOp(10, 5, (a, b) => a + b)  // 15
mathOp(10, 5, (a, b) => a * b)  // 50

Дженерики

function identity<T>(value: T): T {
  return value
}

identity<string>('hello')  // 'hello'
identity(42)               // 42 (тип выведен)