Получи случайную криптовалюту за регистрацию!

​Что такое generics в TypeScript и каковы их преимущества? Дж | Senior Frontend - javascript, html, css

Что такое generics в TypeScript и каковы их преимущества?

Дженерики (generic) помогают писать универсальный, переиспользуемый код, а также в некоторых случаях позволяют отказаться от any. Главная задача дженериков — помочь разработчику писать код, который одинаково будет работать со значениями разных типов.

Суть дженериков
Если мы напишем функцию и жёстко зададим тип, то она сможет работать только со значениями этого типа. Значения других типов передать не получится. Есть два способа это поправить.

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

function includeStr(array: string[], query:string): boolean {
// на входе массив и строка для поиска
for (const value of array) {
// перебираем массив
if (value === query) {
// если в массиве есть элемент — возвращаем true
return true;
}
}
// если ничего не нашлось, возвращаем false
return false;
}
Функция будет отлично работать на массивах из строк. Но для поиска в массиве из чисел придётся дублировать функцию, менять типы, но сам код функции останется неизменным. Например:

function includeNumber(array: number[], query:number): boolean {
// всё то же самое, только на входе числа
for (const value of array) {
if (value === query) {
return true;
}
}
return false;
}
Вот тут на помощь и приходят дженерики. Они помогают написать код, который одинаково работает с данными разных типов.

Пишем много функций для разных типов

Объявляем в функции параметр типа, а потом передаём через него нужный тип

Вместо конкретного типа, мы как будто объявляем «переменную», а затем передаём в неё нужный тип. Таким образом, получается код, который может работать с разными типами:

function include(array: T[], query:T): boolean {
for (const value of array) {
if (value === query) {
return true;
}
}
return false;
}

@seniorFront