Senior Front - канал для front-end программистов, здесь есть много всего про CSS3, Javascript, Html5, Angular, React, видео / статьи / курсы
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<T>(array: T[], query:T): boolean {
for (const value of array) {
if (value === query) {
return true;
}
}
return false;
}
👉 @seniorFront "1plus2plus3plus4" --> "10"
"1plus2plus3minus4" --> "2"
👉 @seniorFront