Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
Теперь тип совпадает с тем, что функция делает на самом деле: принимает сообщение и ничего не отдаёт.
В теле стрелочной функции параметр не аннотирован, и это не забывчивость. Константа log уже размечена типом Logger, поэтому TypeScript выводит типы параметров из него. Механизм называется контекстной типизацией и экономит много букв:
Разница в намерении. void говорит «результат не смотри», undefined говорит «результат есть, и он равен undefined».
Функцию, которая что-то возвращает, разрешено присваивать типу с void:
Без этого правила почти любой колбэк в forEach или обработчике события приходилось бы оборачивать в фигурные скобки. Смысл в том, что раз результат void использовать нельзя, то и не важно, что там вернулось.
Ловушка возникает в обратную сторону: если тип обработчика объявлен как () => void, реально вернувшееся значение получить не выйдет, компилятор будет считать результат void.