Выбор ответа Middle Базовые типы обновлено
Функция, возвращающая void
Вопрос
Что произойдёт при компиляции?
type Cb = () => void;
const f: Cb = () => 42;
const r = f();
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Компилируется, r имеет тип void. Тип функции с результатом void значит «результат не используется», а не «функция обязана ничего не возвращать».
Варианты ответа
- Компилируется,
rимеет типvoidправильный ответ - Компилируется,
rимеет типundefined - Ошибка:
numberнельзя присвоитьvoid - Компилируется,
rимеет типnumber
Разбор
Тип функции с результатом void значит «результат не используется», а не «функция обязана ничего не возвращать». Поэтому функцию, возвращающую 42, можно присвоить в () => void: так работают колбэки вроде arr.forEach(x => list.push(x)), где push возвращает число.
Тип r берётся из объявленного типа Cb, то есть void, а не number. undefined тоже неверно: на деле там лежит 42, но компилятор этого не знает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.