Тип void

Тренажер по TypeScript для пользователей с начальным уровнем подготовки.

Тренажер по TypeScript

Тип void используется для обозначения отсутствия какого-либо возвращаемого значения. Чаще всего он встречается в сигнатурах функций, которые выполняют действия (side effects), но не возвращают результат (например, console.log или запись в базу данных).

Важно отличать void от undefined. Если функция помечена как : void, это сигнал разработчику: «не используй результат выполнения этой функции». Синтаксис прост: function log(): void { ... }. В этих задачах мы научимся корректно типизировать такие процедуры.

Список тем

1. Аннотация void

id: 40631_void_02_replace

В этом задании вам нужно дополнить объявление функции, которая сбрасывает значение переменной. Функция не возвращает никакого значения, поэтому требуется указать соответствующий тип возвращаемого значения в её сигнатуре. Обратите внимание на синтаксис аннотации типов в TypeScript.

Заполните пропуски
let total: number = 100;

function resetTotal() input1S {
    total = 0;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Функции-процедуры

id: 40631_void_03_click

Внимательно изучите представленный класс на TypeScript. Ваша задача — отметить все методы, которые по своей логике являются процедурами, то есть выполняют какое-либо действие (например, устанавливают значение поля или выводят информацию), но не возвращают результат. В TypeScript таким методам обычно указывают тип возврата `void`. Обратите внимание на назначение каждого метода: сеттеры (устанавливающие значения) и методы логирования обычно не возвращают значения. Не отмечайте методы, которые явно предназначены для возврата данных (геттеры, расчётные методы).

Кликните по всем фрагментам, которые подходят под условие задания.
class UserManager {
  private name: string;
  private email: string;
  private age: number;

  constructor(name: string, email: string, age: number) {
    this.name = name;
    this.email = email;
    this.age = age;
  }

  {{getName(): string~|~t1}} {
    return this.name;
  }

  {{setName(newName: string): void~|~t2}} {
    this.name = newName;
  }

  {{logUser(): void~|~t3}} {
    console.log(`User: ${this.name}, Email: ${this.email}`);
  }

  {{calculateAge(): number~|~t4}} {
    return new Date().getFullYear() - this.age;
  }

  {{updateEmail(newEmail: string): void~|~t5}} {
    this.email = newEmail;
  }

  {{getEmail(): string~|~t6}} {
    return this.email;
  }

  {{validateEmail(): boolean~|~t7}} {
    const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return regex.test(this.email);
  }
}
Сообщения
Проверить
Показать подсказку

3. Возврат значения из void

id: 40631_void_04_error

В этом фрагменте кода TypeScript есть ошибка, связанная с использованием типа void. Функция объявлена как возвращающая void, но внутри неё присутствует оператор return с возвращаемым значением. Исправьте ошибку, чтобы код соответствовал правилам TypeScript и успешно компилировался.

Найдите ошибку и исправьте
function logMessage(message: string): void {
    console.log(message);
    return true;
}
 
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Порядок выполнения

id: 40631_void_05_analyze

Проанализируйте TypeScript-код сверху и восстановите последовательность логических шагов выполнения программы. Шаги снизу перемешаны — расставьте их в правильном порядке, чтобы отразить, как программа обрабатывает входные данные и что выводит в консоль.

function logStart(): void {
  console.log('Начало обработки');
}

function logStep(value: number): void {
  console.log(`Шаг ${value}`);
}

function logEnd(): void {
  console.log('Завершение обработки');
}

function processData(data: number[]): void {
  logStart();
  for (let i = 0; i < data.length; i++) {
    if (data[i] > 0) {
      logStep(data[i]);
    }
  }
  logEnd();
}

const inputData: number[] = [1, -2, 3, 0, 5];
processData(inputData);
Расположите элементы в логичном порядке
Внутри processData вызывается logStart(), выводя 'Начало обработки'
Для элемента 0 (не больше 0) вывод не происходит
Для элемента 1 (больше 0) вызывается logStep(1), выводя 'Шаг 1'
Запускается цикл по элементам массива
Для элемента 3 (больше 0) вызывается logStep(3), выводя 'Шаг 3'
После завершения цикла вызывается logEnd(), выводя 'Завершение обработки'
Для элемента 5 (больше 0) вызывается logStep(5), выводя 'Шаг 5'
Для элемента -2 (не больше 0) вывод не происходит
Задаётся входной массив inputData со значениями [1, -2, 3, 0, 5]
Вызывается функция processData с входным массивом
Сообщения
Проверить
Показать подсказку

5. Результат присваивания

id: 40631_void_06_give_result

В данном фрагменте кода TypeScript объявлена функция, возвращающая тип void. Результат вызова этой функции присваивается переменной, после чего значение этой переменной выводится в консоль. Определите, что будет выведено в консоль. Введите ответ в поле ниже в точности так, как оно появится при выполнении кода.

Что должно получиться?
function logMessage(): void {
    console.log("Hello");
}

let result = logMessage();
console.log(result);
Сообщения
Проверить
Показать подсказку

TypeScript: компиляция и запуск

id: 40631_compiler

Этот пример показывает, как в TypeScript используется тип void: функция может выполнять действие (например, писать в консоль), но не возвращать значение. Попробуйте изменить функции так, чтобы они начали возвращать что-то, и посмотрите, как TypeScript отреагирует на попытку присвоить результат переменной. Поэкспериментируйте: добавляйте свои функции-"процедуры", меняйте входные параметры, попробуйте вернуть число из void-функции и сравните с функцией, которая возвращает строку. Также можно включать/выключать строки с ошибками и наблюдать подсказки компилятора.

TS
Запустить тренажёр (TypeScript)
НайтиКурс.Ру