Что такое дженерики (generics) в TypeScript и как они используются?

Пользователь

от justice , в категории: Компьютерные технологии , год назад

Что такое дженерики (generics) в TypeScript и как они используются?

Facebook Vk Ok Twitter Telegram Whatsapp

1 ответ

Пользователь

от mariana , год назад

@justice 

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


Для использования дженериков в TypeScript используется параметр типа, который указывается в угловых скобках. Например:

1
2
3
4
5
6
function reverse<T>(items: T[]): T[] {
    return items.reverse();
}

const array: number[] = [1, 2, 3, 4, 5];
const reversedArray = reverse(array); // [5, 4, 3, 2, 1]


В этом примере функция reverse принимает параметр типа T, который указывает тип элементов массива items. Затем мы можем использовать эту функцию с различными типами, например, с массивом чисел или строк.


Дженерики также могут использоваться в интерфейсах и классах. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
interface Stack<T> {
    push(item: T): void;
    pop(): T | undefined;
}

class MyStack<T> implements Stack<T> {
    private items: T[] = [];

    push(item: T): void {
        this.items.push(item);
    }

    pop(): T | undefined {
        return this.items.pop();
    }
}

const stack = new MyStack<number>();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // 3


В этом примере мы создаем интерфейс Stack, который определяет методы добавления и удаления элементов из стека. Затем мы создаем класс MyStack, который реализует этот интерфейс с помощью параметра типа T. Мы создаем экземпляр этого класса с параметром типа number и добавляем в него несколько элементов.


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