Типовые переменные в TypeScript
Для лучшего понимания концепции дженериков давайте создадим нашу первую функцию - функцию-тождество. Такая функция возвращает точно то, что ей передали - с тем же типом.
Давайте для начала напишем варианты нашей функции по отдельности.
Напишем функцию, которая параметром принимает число и возвращает число:
function func(data: number): number {
return data;
}
Теперь напишем функцию, которая параметром принимает строку и возвращает строку:
function func(data: string): string {
return data;
}
Пусть теперь мы хотим сделать так, чтобы это все делала одна функция. To есть мы хотим выполнить обобщение.
Для этого мы используем типовую
переменную, которая сохраняет в себя
тип данных. Такая переменная объявляется
в угловых скобках перед круглыми скобками
с параметрами функции. Давайте объявим
такую переменную, дав ей имя T
(можно любое):
function func <T>(тут параметры) {
return data;
}
После этого у нас появится переменная T,
которую можно будет использовать, чтобы
положить в нее тип параметра, а затем
указать его в качестве возвращаемого
значения.
Укажем нашему параметру тип в виде нашей переменной:
function func <T>(data: T) {
return data;
}
Получится, что параметр может быть передан
в любом типе, и этот тип сохранится в нашу
переменную T.
Теперь используем значение переменной T
в качестве указания результата функции:
function func <T>(data: T): T {
return data;
}
Теперь получится, что тип результата функции будет получаться из типа параметра. Давайте проверим.
Вызовем функцию с числом:
console.log( func(3) ); // выведет 3
Вызовем функцию со строкой:
console.log( func('x') ); // выведет 'x'
Сделайте функцию, которая параметром принимает или два числа, или две строки. Своим результатом функция должна возвращать сумму параметров.