Union с примитивами

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

Тренажер по TypeScript

Union типы с примитивами позволяют переменной принимать значения нескольких простых типов. Синтаксис string | number означает, что переменная может быть строкой или числом.

В этих практических заданиях вы научитесь:

  • Создавать union типы из примитивов
  • Использовать сужение типов через typeof для безопасной работы
  • Применять union в параметрах функций

Бесплатный онлайн-тренажер поможет понять, как работает объединение типов в реальном коде TypeScript.

Список тем

1. Сборка функции с union типом

id: 40661_union_01_build

Из предложенных строк соберите корректную TypeScript-функцию, которая принимает параметр типа string | number, проверяет его тип с помощью typeof и возвращает соответствующее сообщение. Правильный порядок строк единственный. Игнорируйте лишние строки, которые не должны входить в решение.

Перетяните в правильном порядке строки из одного блока в другой
function processValue(value: string | number): string {
    if (typeof value === 'string') {
        return `Received string: ${value}`;
    } else if (typeof value === 'number') {
        return `Received number: ${value}`;
    }
}
    console.log(value);
    let result = value + 10;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Заполнение union типа

id: 40661_union_02_fill

В этом задании вам предстоит заполнить пропуски в объявлении union типа на TypeScript. Код объявляет переменную value, которой можно присваивать строковые и числовые значения. Исходя из контекста присваиваемых значений, определите, какие примитивные типы нужно использовать в union типе, и вставьте символ объединения типов. После заполнения пропусков код должен корректно компилироваться и выполняться, выводя значения в консоль.

Заполните пропуски
// Объявите union тип string | number для переменной value
let value: input1S input2S input3S;
value = "Hello";
console.log(value);
value = 42;
console.log(value);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Примитивные и составные типы

id: 40661_union_03_sort

Перед вами список типов данных TypeScript. Распределите каждый тип по одной из двух категорий: «Примитивные типы» (string, number, boolean, null, undefined) и «Составные типы» (object, Array, функции). Каждый элемент однозначно относится только к одной категории. Обратите внимание, что примитивные типы представляют собой простые неделимые значения, а составные типы могут содержать другие значения или поведение.

Перетяните элементы в соответствующие блоки
Примитивные типы
Составные типы
string
number
boolean
null
undefined
object
Array<string>
(x: number) => void
Сообщения
Проверить
Показать подсказку

4. Исправление синтаксиса union

id: 40661_union_04_error

В этом фрагменте кода TypeScript допущена ошибка в синтаксисе объявления union-типа. Найдите строку с ошибкой и исправьте её, чтобы переменная могла корректно принимать значения разных типов.

Найдите ошибку и исправьте
let age: string, number;
age = 30;
console.log("Age: " + age);
let price: string | number;
price = "100";
console.log("Price: " + price);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Результат с union параметром

id: 40661_union_05_predict

Проанализируйте код функции на TypeScript, которая принимает параметр типа union (объединение типов) и использует оператор typeof для условной логики. Рассмотрите конкретный вызов функции с заданным аргументом и определите, какое значение будет возвращено. Выберите правильный результат из предложенных вариантов.

Выберите правильный вариант ответа
function processValue(value: string | number): string {
  if (typeof value === 'string') {
    return `String: ${value.toUpperCase()}`;
  } else {
    return `Number: ${value.toFixed(2)}`;
  }
}

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

6. Разметка частей объявления

id: 40661_union_06_highlight

Разметьте части объявления переменной в TypeScript, указав для каждого выделенного фрагмента, является ли он ключевым словом, именем переменной, первым типом, оператором объединения, вторым типом или значением. Это упражнение поможет закрепить понимание синтаксиса объединения типов (union types) в TypeScript.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
{{let~|~t1}} {{value~|~t2}}: {{string~|~t3}} {{|~|~t4}} {{number~|~t5}} = {{42~|~t6}};
Оператор объединения
Тип
Ключевое слово
Имя переменной
Значение
Сообщения
Проверить
Показать подсказку

7. Порядок проверки типов

id: 40661_union_07_sequence

Перед вами строки TypeScript-кода, которые обрабатывают переменную с union-типом string | number. Строки перемешаны. Расставьте их в правильном порядке, чтобы получилась корректная конструкция if-else, которая проверяет тип переменной с помощью typeof и выполняет соответствующее действие: для строки выводит её длину, для числа — его квадрат. Обратите внимание на логическую последовательность: объявление переменной, проверка типа, обработка каждого случая.

Расставьте строки в правильном порядке
}
    console.log(`Квадрат числа: ${value * value}`);
let value: string | number = 'hello';
if (typeof value === 'string') {
    console.log(`Длина строки: ${value.length}`);
} else {
Сообщения
Проверить
Показать подсказку

8. Анализ сужения типа

id: 40661_union_08_analyze

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

function processValue(input: string | number): string {
  if (typeof input === 'string') {
    return `Строка в верхнем регистре: ${input.toUpperCase()}`;
  } else if (typeof input === 'number') {
    return `Число с двумя знаками после запятой: ${input.toFixed(2)}`;
  }
  return 'Неизвестный тип';
}

const result = processValue(42.567);
console.log(result);
Расположите элементы в логичном порядке
Выполняется проверка типа аргумента с помощью оператора typeof
В ветке для числа вызывается метод toFixed(2), который округляет число до двух знаков после запятой
Функция processValue вызывается с аргументом 42.567 (тип number)
Результат проверки typeof — 'number', поэтому выполняется ветка для числа
Строка выводится в консоль через console.log
Формируется итоговая строка: 'Число с двумя знаками после запятой: 42.57'
Сообщения
Проверить
Показать подсказку

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

id: 40661_compiler

Пример использования union типов с примитивами в TypeScript. Узнайте, как создавать переменные и параметры функций, которые могут принимать значения нескольких типов. Экспериментируйте: меняйте типы в union, добавляйте новые варианты, пробуйте разные значения. Вы увидите, как TypeScript обеспечивает гибкость и безопасность типов одновременно.

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