Тип symbol

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

Тренажер по TypeScript

Тип symbol — это уникальный и неизменяемый примитивный тип данных, введенный в ES6 и поддерживаемый в TypeScript. Символы часто используются в качестве ключей свойств объектов, когда нужно избежать коллизий имен или создать «скрытые» свойства, которые не перебираются в обычных циклах.

Для создания символа используется функция Symbol(). Важно помнить: Symbol('id') === Symbol('id') вернет false, так как каждый символ уникален, даже если их описание совпадает. Это отличный инструмент для метапрограммирования и создания уникальных идентификаторов.

Вас ждут примеры и тесты, которые помогут понять, как создавать символы, использовать их в качестве ключей и почему нельзя использовать оператор new с символами. Этот тренажер позволит вам безопасно экспериментировать с этим типом данных.

Список тем

1. Создание символа

id: 40626_ts_symbol_replace_01

Дополните фрагмент кода на TypeScript так, чтобы он создавал уникальный символ (symbol) с описанием 'id' и выводил его строковое представление в консоль. Заполните пропуски корректными значениями, не меняя структуру кода. Обратите внимание: в пропуск для описания вводите только содержимое строки, без кавычек.

Заполните пропуски
let uniqueKey = input1S("input2S");
console.log(uniqueKey.toString());
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Проверка уникальности

id: 40626_ts_symbol_predict_02

Проанализируйте приведённый фрагмент кода на TypeScript, который создаёт два символа с одинаковым описанием и выполняет их сравнение. Определите, каким будет результат этого сравнения — true или false. Обратите внимание на ключевое свойство типа symbol.

Выберите правильный вариант ответа
const sym1 = Symbol('unique_key');
const sym2 = Symbol('unique_key');
const areEqual = sym1 === sym2;
console.log(areEqual);
Сообщения
Проверить
Показать подсказку

3. Ошибка с new

id: 40626_ts_symbol_error_03

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

Найдите ошибку и исправьте
let mySymbol = new Symbol();
console.log(mySymbol);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Использование символа как ключа

id: 40626_ts_symbol_select_fill_04

В данном фрагменте кода TypeScript объявлены три символа и объект, использующий два из них в качестве ключей. Вам необходимо выбрать из выпадающего списка правильные переменные-символы для доступа к значениям 123 и 'John' через квадратные скобки. Обратите внимание, что символы уникальны, и только те, которые были использованы при создании объекта, позволят получить доступ к его свойствам.

Нужно правильно расставить в пропуски предложенные варианты
const sym1 = Symbol('id');
const sym2 = Symbol('name');
const sym3 = Symbol('age');

const obj = {
  [sym1]: 123,
  [sym2]: 'John'
};

console.log(obj[input1S]); // Должно вывести 123
console.log(obj[input2S]); // Должно вывести 'John'
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Чтение свойства по символу

id: 40626_ts_symbol_give_result_05

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

Что должно получиться?
const secretKey = Symbol('secret');
const storage = {
    name: 'Storage',
    [secretKey]: 'HiddenData123'
};

console.log(storage[secretKey]);
Сообщения
Проверить
Показать подсказку

6. Порядок работы с символом

id: 40626_ts_symbol_sequencing_06

Перед вами строки кода TypeScript, которые демонстрируют работу с типом symbol. Они перемешаны. Расставьте строки в правильном порядке, чтобы получился корректный код, который создаёт символ, объявляет объект, использует символ в качестве ключа для добавления свойства в объект, а затем выводит значение этого свойства в консоль. Обратите внимание, что символы — это уникальные примитивные значения, которые могут использоваться как ключи объектов.

Расставьте строки в правильном порядке
const obj: any = {};
console.log(obj[sym]);
const sym = Symbol('myKey');
obj[sym] = 'secret value';
Сообщения
Проверить
Показать подсказку

7. Разбор создания символа

id: 40626_ts_symbol_highlight_07

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

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
const {{mySymbol~|~t1}} = {{Symbol~|~t2}}("{{description~|~t3}}");
Строка-описание
Переменная
Функция Symbol
Сообщения
Проверить
Показать подсказку

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

id: 40626_compiler

Погрузитесь в мир уникальных идентификаторов с типом Symbol! В этом примере мы создаем два символа с одинаковым описанием — попробуйте сравнить их и посмотрите, почему они никогда не будут равны. Экспериментируйте: используйте символы как скрытые ключи объектов, добавьте свои собственные уникальные свойства и проверьте, отображаются ли они при обычном переборе через Object.keys. Попробуйте 'взломать' объект, обратившись к свойству по строковому имени вместо символа, и посмотрите на результат!

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