Типске променљиве у 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'
Направите функцију, која параметрима прима или два броја, или два стринга. Својим резултатом функција мора да врати збир параметара.