Поиск по сайту
Ctrl + K
Вопросы по TS

Что такое generics в TypeScript?

В TypeScript обобщения (generics) позволяют создавать компоненты, которые могут работать с множеством типов, оставаясь при этом типобезопасными. Это позволяет разрабатывать более гибкие и переиспользуемые компоненты, функции и классы.

Что такое обобщения?

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

Пример использования обобщений

Вот простой пример функции, использующей обобщения:

function getFirstElement<T>(arr: T[]): T | undefined {
    return arr[0];
}

const numArray = [1, 2, 3];
const firstNum = getFirstElement(numArray);
console.log(firstNum); // 1

const strArray = ['a', 'b', 'c'];
const firstStr = getFirstElement(strArray);
console.log(firstStr); // "a"

В этом примере T является параметром типа, который будет заменён конкретным типом данных, когда вы будете вызывать функцию getFirstElement. Это позволяет функции работать как с числовыми массивами, так и с массивами строк, без потери типовой информации.

Обобщения в интерфейсах и классах

Вы также можете использовать обобщения в интерфейсах и классах. Вот пример обобщённого класса:

class Box<T> {
    private content: T;

    constructor(content: T) {
        this.content = content;
    }

    getContent(): T {
        return this.content;
    }
}

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

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

В этом классе Box используется параметр типа T, что позволяет создать коробку для любого типа контента.

Заключение

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

Понимание обобщений - это важный шаг для любого разработчика, стремящегося освоить TypeScript и повысить качество своего кода.