Вопрос проверяет понимание дженериков в TypeScript для сохранения типа аргумента в возвращаемом значении.
Дженерики (обобщённые типы) в TypeScript позволяют создавать компоненты, работающие с разными типами, сохраняя при этом строгую типизацию. Без дженериков пришлось бы использовать тип any, что лишает преимуществ TypeScript — автодополнения и проверки ошибок на этапе компиляции.
Дженерик объявляется с помощью угловых скобок <T> перед списком параметров. T — это условное имя типа, которое будет заменено на реальный тип при вызове функции. Вы можете использовать любую букву или слово, но традиционно применяют T (от Type).
function identity<T>(arg: T): T {
return arg;
}
// Примеры использования:
const num = identity(42); // тип number
const str = identity('hello'); // тип string
const arr = identity([1,2,3]); // тип number[]При вызове функции TypeScript автоматически определяет тип T на основе переданного аргумента. В примере выше identity(42) выводит T = number, поэтому возвращаемое значение имеет тип number. Это избавляет от необходимости явно указывать тип в угловых скобках, хотя это возможно: identity<string>('hello').
Дженерики особенно полезны для функций, работающих с массивами или коллекциями:
function firstElement<T>(arr: T[]): T | undefined {
return arr[0];
}
const first = firstElement([10, 20, 30]); // тип number
const firstStr = firstElement(['a', 'b']); // тип stringДженерики — ключевой инструмент для написания типобезопасного переиспользуемого кода. Используйте их, когда функция или класс должны работать с разными типами, но при этом сохранять связь между типами аргументов и результата. Это повышает надёжность кода и улучшает опыт разработки за счёт автодополнения и раннего обнаружения ошибок.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию