Тип symbol — это уникальный и неизменяемый примитивный тип данных, введенный в ES6 и поддерживаемый в TypeScript. Символы часто используются в качестве ключей свойств объектов, когда нужно избежать коллизий имен или создать «скрытые» свойства, которые не перебираются в обычных циклах.
Для создания символа используется функция Symbol(). Важно помнить: Symbol('id') === Symbol('id') вернет false, так как каждый символ уникален, даже если их описание совпадает. Это отличный инструмент для метапрограммирования и создания уникальных идентификаторов.
Вас ждут примеры и тесты, которые помогут понять, как создавать символы, использовать их в качестве ключей и почему нельзя использовать оператор new с символами. Этот тренажер позволит вам безопасно экспериментировать с этим типом данных.
- Модуль 1: Введение в TypeScript
- Модуль 2: Примитивные типы
- Модуль 3: Специальные типы
- Модуль 4: Массивы
- Модуль 5: Кортежи (Tuples)
- Модуль 6: Объекты
- Модуль 7: Функции
- Модуль 8: Union типы
- Модуль 9: Литеральные типы
- Модуль 10: Type Aliases
- Модуль 11: Интерфейсы
- Модуль 12: Type Guards и Narrowing
- Модуль 13: Enums
- Модуль 14: Классы
- Модуль 15: Generics — основы
- Модуль 16: Generics — ограничения
- Модуль 17: Utility Types — базовые
- Модуль 18: Utility Types — работа с Union
- Модуль 19: Utility Types — функции
- Модуль 20: Type Assertions
- Модуль 21: Keyof и Typeof операторы
- Модуль 22: Mapped Types
- Модуль 23: Conditional Types
- Модуль 24: Discriminated Unions
- Модуль 25: Модули и типы
- Модуль 26: Declaration Files
- Модуль 27: Типизация асинхронного кода
- Модуль 28: Практические паттерны
1. Создание символа
Дополните фрагмент кода на TypeScript так, чтобы он создавал уникальный символ (symbol) с описанием 'id' и выводил его строковое представление в консоль. Заполните пропуски корректными значениями, не меняя структуру кода. Обратите внимание: в пропуск для описания вводите только содержимое строки, без кавычек.
let uniqueKey = input1S("input2S");
console.log(uniqueKey.toString());2. Проверка уникальности
Проанализируйте приведённый фрагмент кода на TypeScript, который создаёт два символа с одинаковым описанием и выполняет их сравнение. Определите, каким будет результат этого сравнения — true или false. Обратите внимание на ключевое свойство типа symbol.
const sym1 = Symbol('unique_key');
const sym2 = Symbol('unique_key');
const areEqual = sym1 === sym2;
console.log(areEqual);3. Ошибка с new
В этом фрагменте кода TypeScript допущена одна синтаксическая ошибка, связанная с созданием значения типа symbol. Вам нужно найти строку с ошибкой и исправить её, чтобы код мог корректно выполняться. Обратите внимание на правильный способ создания символов в TypeScript.
let mySymbol = new Symbol();console.log(mySymbol);4. Использование символа как ключа
В данном фрагменте кода 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'5. Чтение свойства по символу
В приведённом ниже фрагменте кода TypeScript создаётся уникальный символ с помощью функции Symbol(), а затем объект, содержащий свойство с этим символом в качестве ключа. Код выводит значение данного свойства в консоль. Определите, какая именно строка будет выведена. Введите только эту строку без кавычек и дополнительных символов.
const secretKey = Symbol('secret');
const storage = {
name: 'Storage',
[secretKey]: 'HiddenData123'
};
console.log(storage[secretKey]);6. Порядок работы с символом
Перед вами строки кода TypeScript, которые демонстрируют работу с типом symbol. Они перемешаны. Расставьте строки в правильном порядке, чтобы получился корректный код, который создаёт символ, объявляет объект, использует символ в качестве ключа для добавления свойства в объект, а затем выводит значение этого свойства в консоль. Обратите внимание, что символы — это уникальные примитивные значения, которые могут использоваться как ключи объектов.
const obj: any = {};console.log(obj[sym]);const sym = Symbol('myKey');obj[sym] = 'secret value';7. Разбор создания символа
В данном задании вам нужно разметить элементы в строке кода TypeScript, создающей символ (symbol). Обратите внимание на три ключевых элемента: переменную, функцию Symbol и строку-описание. Выберите для каждого выделенного фрагмента соответствующий тип из предложенных вариантов.
const {{mySymbol~|~t1}} = {{Symbol~|~t2}}("{{description~|~t3}}");