Все истории

🧠 Generics простыми словами: когда функция становится умнее

Копия публикации из архива канала. Дата и текст сохранены.

Представь, что ты написал функцию, которая переворачивает массив.
Сначала она работает только с числами. Потом понадобились строки. Потом объекты.
Что делать? 🤔

Создавать три одинаковые функции?
❌ Не очень удобно.
Использовать any?
❌ Мы уже знаем, чем это заканчивается. 😅

💡 Именно для этого в TypeScript существуют Generics.

Они позволяют сказать функции:
«Я пока не знаю, с каким типом ты будешь работать. Но когда вызовут — используй именно его.»

То есть вместо одной функции для чисел и второй для строк ты пишешь одну универсальную, которая сохраняет информацию о типе данных. 🚀

В результате:
✅ передал массив чисел — получишь массив чисел;
✅ передал строки — вернутся строки;
✅ передал объекты — останутся объекты.

Без потери типов и без магического any. ✨
По сути, Generics делают функцию умнее.

Она перестаёт быть привязанной к одному типу данных и начинает работать с любыми, не забывая, что именно ей передали.

Именно поэтому Generics встречаются практически везде:
📦 в массивах;
⚛️ в React-хуках;
🌐 в API-запросах;
📚 в популярных библиотеках.

Сначала синтаксис с угловыми скобками может выглядеть пугающе. 😬
Но когда понимаешь идею, оказывается, что Generics — это всего лишь способ написать код один раз, а использовать его для любых типов безопасно и без копипаста.

💬 А у вас тоже при виде <T> в начале всё казалось каким-то древним заклинанием? Или Generics сразу стали понятны?