Ответ
Да, не всегда. Generic-параметр T можно использовать без явной передачи, если TypeScript может вывести тип из контекста. Например:
function identity<T>(arg: T): T {
return arg;
}
// Явная передача типа
const result1 = identity<string>("hello");
// Автовывод типа
const result2 = identity("world"); // TypeScript понимает, что T = string
Однако явное указание типа необходимо, когда:
- Тип не может быть выведен автоматически
- Нужно указать более широкий тип, чем выводимый
- Работаете с пустыми массивами или null/undefined значениями
const emptyArray = identity([]); // T = never[]
const typedArray = identity<number[]>([]); // T = number[]