Дженерик функция
Дженерик это параметр, только не для значения, а для типа. Его объявляют в угловых скобках перед списком аргументов и дальше используют внутри сигнатуры как обычный тип:
Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноДженерик это параметр, только не для значения, а для типа. Его объявляют в угловых скобках перед списком аргументов и дальше используют внутри сигнатуры как обычный тип:
function first<T>(items: T[]): T {
return items[0];
}При вызове T подставляется сам: TypeScript смотрит на переданный аргумент и выводит, чем в этот раз оказался T.
В задании функция возвращает то, что получила, но её тип намертво прибит к строке:
Компилятор ругается на вызов: «Argument of type 'number' is not assignable to parameter of type 'string'». Сама логика функции к строкам никакого отношения не имеет, она одинаково работает с чем угодно. Ограничивает её только аннотация.
Первое желание обычно поставить any или unknown. С any ошибка пропадёт, но age тоже станет any, и TypeScript перестанет что-либо проверять дальше. С unknown на выходе будет unknown, и с числом ничего не сделать без проверки. Нужна связь: какой тип пришёл, такой и ушёл.
Подробнее: Generics — справочник TypeScript.
Сделай identity дженерик-функцией, у которой тип результата совпадает с типом аргумента. После этого age должен вывестись как number. Тело функции и вызов менять не нужно.