Выбор ответа Middle Базовые типы обновлено

Функция, возвращающая void

Вопрос

Что произойдёт при компиляции?

type Cb = () => void;
const f: Cb = () => 42;
const r = f();

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Компилируется, r имеет тип void. Тип функции с результатом void значит «результат не используется», а не «функция обязана ничего не возвращать».

Варианты ответа

  1. Компилируется, r имеет тип voidправильный ответ
  2. Компилируется, r имеет тип undefined
  3. Ошибка: number нельзя присвоить void
  4. Компилируется, r имеет тип number

Разбор

Тип функции с результатом void значит «результат не используется», а не «функция обязана ничего не возвращать». Поэтому функцию, возвращающую 42, можно присвоить в () => void: так работают колбэки вроде arr.forEach(x => list.push(x)), где push возвращает число.

Тип r берётся из объявленного типа Cb, то есть void, а не number. undefined тоже неверно: на деле там лежит 42, но компилятор этого не знает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.