Тыпавыя зменныя ў TypeScript
Для лепшага разумення канцэпцыі джэнерыкаў давайце створым нашу першую функцыю - функцыю-тоеснасць. Такая функцыя вяртае дакладна тое, што ёй перадалі - з тым жа тыпам.
Давайце для пачатку напішам варыянты нашай функцыі па асобнасці.
Напішам функцыю, якая параметрам прымае лік і вяртае лік:
function func(data: number): number {
return data;
}
Цяпер напішам функцыю, якая параметрам прымае радок і вяртае радок:
function func(data: string): string {
return data;
}
Хай цяпер мы хочам зрабіць так, каб гэта ўсё рабіла адна функцыя. Гэта значыць мы хочам выканаць абагульненне.
Для гэтага мы выкарыстоўваем тыпавую
зменную, якая захоўвае ў сябе
тып дадзеных. Такая зменная аб'яўляецца
ў вуглавых дужках перад круглымі дужкамі
з параметрамі функцыі. Давайце аб'явім
такую зменную, даўшы ёй імя 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'
Зрабіце функцыю, якая параметрам прымае альбо два лікі, альбо два радкі. Сваім вынікам функцыя павінна вяртаць суму параметраў.