Основы Typescript
Теория: Опциональные параметры в функциях
В этом уроке мы разберем опциональные параметры в функциях.
Использование опциональных параметров в функциях
Опциональные параметры в функциях используются во встроенных функциях JavaScript, когда параметр необязателен. Опциональные параметры задаются с помощью знака вопроса после имени переменной перед двоеточием, как в примере ниже:
В таком случае реальный тип переменной separator будет string | undefined (string или undefined). Другой вариант задать опциональный параметр — присвоить значение по умолчанию:
Разработчики пытаются применять эту логику к колбекам, но сталкиваются с ошибками. Разберем, почему так происходит.
Колбек функции
Представим функцию filter(), которая фильтрует числовые массивы по переданному предикату:
Как и во встроенном методе filter(), колбек этой функции принимает индекс обрабатываемого элемента массива в качестве второго параметра. Обычно индексы не используют, но иногда фильтрация массива все таки делается на их основе — в этом случае их указывают.
Было бы логичным указать этот параметр как необязательный, но это так не работает:
В этом случае ошибка обозначает, что теоретически undefined может оказаться внутри колбека. Так происходит из-за необязательности параметра. По идее undefined не окажется в колбеке, потому что индекс всегда определен, но ошибка все равно появляется. Чтобы решить эту ситуацию, нужно отказаться от опциональности:
Колбеки с меньшим числом параметров всегда могут появляться там, где они же ожидаются с большим числом параметров, при условии, что типы общих параметров совпадают.
В примере выше аргументом передается функция (n) => n > 1, а вызывается она как callback(n, index). Это приводит к игнорированию index, при этом никаких ошибок типов не возникает.



