Вывод и явное указание типов

TypeScript может определять типы автоматически или принимать их от разработчика. Эти два подхода — вывод типов и явное указание — дополняют друг друга и используются в зависимости от контекста.

Вывод типов (type inference)

Когда вы объявляете переменную и сразу присваиваете ей значение, TypeScript автоматически определяет её тип:

let message = "Hello"; // тип: string
let count = 42;        // тип: number
let isActive = true;   // тип: boolean

Вывод работает не только для переменных, но и для возвращаемых значений функций:

function add(a: number, b: number) {
  return a + b; // тип возврата: number
}

Этот механизм позволяет писать меньше кода без потери безопасности: типы проверяются, но не загромождают синтаксис.

Явное указание типов

Иногда TypeScript не может вывести тип — например, если переменная объявлена без начального значения или получает данные из внешнего источника:

let userId; // тип: any (небезопасно!)
userId = fetchFromAPI(); // ошибка возможна

Чтобы избежать этого, тип указывают явно:

let userId: string;
userId = fetchUserId(); // компилятор знает: ожидается строка

Явное указание также используется в сигнатурах функций для параметров и возвращаемого значения:

function greet(name: string): string {
  return "Hello, " + name;
}

Это делает контракт функции понятным без чтения её тела.

Когда что использовать

  • Используйте вывод типов, когда значение известно сразу — это делает код короче и чище.
  • Используйте явное указание, когда:
    • переменная инициализируется позже,
    • функция принимает или возвращает данные, тип которых важен для интерфейса,
    • вы работаете с внешними данными (например, API),
    • хотите усилить читаемость и защиту от ошибок.

Явное указание типов не «переопределяет» вывод — оно лишь задаёт ожидания заранее. Если присвоить значение несовместимого типа, компилятор выдаст ошибку.