Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
T описывает элементы входного массива и аргумент колбэка, R описывает результат колбэка и элементы итогового массива. Каждый параметр встречается в сигнатуре минимум дважды, и именно это связывает части между собой.
TypeScript выводит параметры по шагам:
["раз", "два"] получается T = string.word: string, и word.length компилируется.number, значит R = number.R[], то есть number[].Важно, что массив передаётся раньше колбэка. Сначала TypeScript выводит типы из «простых» аргументов, а потом уже подставляет их в параметры стрелочных функций.
Встроенный map объявлен почти так же:
T здесь параметр самого массива, а U параметр метода. Тот же приём с двумя неизвестными.
Хорошее правило: параметр типа нужен там, где он связывает минимум два места. Если T встречается в сигнатуре один раз, он ничего не связывает и его можно заменить на unknown.