@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
и добавляем в него несколько элементов.
Дженерики могут существенно повысить гибкость кода и сделать его более универсальным. Они позволяют писать более чистый и понятный код и избавляться от повторяющихся конструкций.