Нужно ли передавать Generic в T =

«Нужно ли передавать Generic в T =» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, не всегда. Generic-параметр T можно использовать без явной передачи, если TypeScript может вывести тип из контекста. Например:

function identity<T>(arg: T): T {
  return arg;
}

// Явная передача типа
const result1 = identity<string>("hello");

// Автовывод типа
const result2 = identity("world"); // TypeScript понимает, что T = string

Однако явное указание типа необходимо, когда:

  1. Тип не может быть выведен автоматически
  2. Нужно указать более широкий тип, чем выводимый
  3. Работаете с пустыми массивами или null/undefined значениями
const emptyArray = identity([]); // T = never[]
const typedArray = identity<number[]>([]); // T = number[]