TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #770 5.39K
🤔 Зачем нужны дженерики?

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

🚩Почему нужны

🟠Повторное использование кода
Дженерики позволяют создавать обобщенные функции, классы и интерфейсы, которые можно использовать с различными типами данных, уменьшая дублирование кода и увеличивая его повторное использование.
🟠Безопасность типов
Использование дженериков позволяет избежать ошибок, связанных с типами, поскольку компилятор TypeScript может проверять типы на этапе компиляции.
🟠Гибкость и абстракция
Дженерики предоставляют возможность создавать более гибкие и абстрактные компоненты, которые могут работать с любыми типами данных, обеспечивая при этом строгую типизацию.

🚩Функции

Дженерики позволяют создавать функции, которые могут работать с различными типами данных. Например, функция, которая возвращает переданное ей значение:
function identity<T>(value: T): T {
return value;
}

const numberIdentity = identity(42); // T is inferred as number
const stringIdentity = identity("Hello"); // T is inferred as string


🚩Классы

Классы могут использовать дженерики для работы с различными типами данных:
class Box<T> {
contents: T;

constructor(value: T) {
this.contents = value;
}

getContents(): T {
return this.contents;
}
}

const numberBox = new Box<number>(123);
console.log(numberBox.getContents()); // 123

const stringBox = new Box<string>("Hello");
console.log(stringBox.getContents()); // Hello


🚩Интерфейсы

Интерфейсы могут использовать дженерики для описания структур данных, которые могут содержать различные типы:
interface Pair<T, U> {
first: T;
second: U;
}

const numberStringPair: Pair<number, string> = {
first: 42,
second: "Answer"
};

const booleanArrayPair: Pair<boolean, boolean[]> = {
first: true,
second: [true, false, true]
};


🚩Ограничения дженериков

Иногда требуется ограничить типы, которые могут быть переданы дженерикам. Для этого используются ограничения (extends). В этом примере функция logLength принимает только те типы, у которых есть свойство length.
function logLength<T extends { length: number }>(value: T): void {
console.log(value.length);
}

logLength("Hello"); // 5
logLength([1, 2, 3]); // 3
logLength({ length: 10, value: "example" }); // 10


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 25
  • ❤ 2
More from @easy_javascript_ru
  1. Oct 14, 2026🤔 Зачем создавались библиотеки react и другие? Библиотеки, такие как React, создавались д…
  2. Oct 13, 2026🤔 Что такое репозиторий? Это хранилище кода, файлов и их истории изменений. Используется…
  3. Oct 13, 2026🤔 Как мы можем замерить скорость работы участка кода с date.Now? В JavaScript можно замер…
  4. Oct 12, 2026🤔 Зачем нужен docker? Это инструмент для создания, развертывания и управления контейнерам…
  5. Oct 11, 2026🤔 Для чего нужен тег <noscript>? Он используется для отображения альтернативного контента…
  6. Oct 11, 2026🤔 Какими способами мы можем получить картинку с сервера? В веб-разработке есть разные спо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →