Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: object, key

Какие типы данных могут быть ключами объекта?

Вопрос проверяет понимание того, как JavaScript обрабатывает ключи объектов и какие типы реально поддерживаются.

Короткий ответ

Ключами обычного объекта могут быть только строки и Symbol. Если использовать другие типы (числа, объекты, boolean), они автоматически приводятся к строке. Это происходит неявно и может приводить к неожиданным конфликтам ключей. Symbol — единственный тип, который не приводится к строке.

Длинный ответ

Определение

Ключ объекта — это идентификатор свойства, по которому значение хранится и извлекается из объекта.

Какие типы поддерживаются напрямую

Перед перечислением важно подчеркнуть: не всё, что вы пишете в квадратных скобках, реально остаётся своим типом.

  1. Строки (string)

  2. Символы (symbol)

const obj = {
  name: "Alex"
};

const sym = Symbol("id");
obj[sym] = 123;

Что происходит с другими типами

Все остальные типы приводятся к строке.

  1. Числа:

    const obj = {};
    obj[1] = "one";
    
    console.log(Object.keys(obj)); // ["1"]
    
  2. Boolean:

    obj[true] = "yes"; // ключ "true"
    
  3. Объекты:

    const key = {};
    obj[key] = "value";
    
    console.log(Object.keys(obj)); // ["[object Object]"]
    

Почему symbol — особый случай

  1. Symbol не приводится к строке

  2. Каждый Symbol уникален

  3. Ключи-символы не участвуют в обычных перечислениях (Object.keys)

Практический нюанс

Если нужны ключи “любого типа” без приведения:

  1. Используйте Map

  2. Там ключами могут быть объекты, функции и примитивы без преобразования

Вывод

В обычных объектах реальными ключами являются только строки и Symbol. Все остальные типы неявно приводятся к строке, что важно учитывать при проектировании структуры данных.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#object

#key

Подпишись на React Developer в телеграм