TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #251 1.74K
Зачем нужен Symbol в JavaScript?
#code_pattern

В ECMAScript2015 (ES6) появился примитивный тип Symbol. Он используется, чтобы создавать уникальные идентификаторы. Пример:
const first = Symbol('example')
const second = Symbol('example')
first === first // true
first === second // false
Т.е. создать второй раз тот же самый идентификатор нельзя. Их используют для определения свойств объектов, т.е. обращения к его ключам.

Основное назначение Symbol это работа со встроенными фичами языка. Для этого существуют Well-known Symbols, такие как:
- Symbol.iterator
- Symbol.hasInstance
- Symbol.toStringTag
- и т.д., подробней об встроенных символах смотри typescript doc или на habr.

Well-known Symbols, используются на системном уровне программирования, т.е. на уровне библиотек и фреймворков. На прикладном уровне, т.е. на уровне написания кода приложения, а не библиотек, устоявшейся практикой является использование Symbol в декораторах на TypeScript. Пример:
import { SetMetadata } from '@nestjs/common';
export const isPublic = Symbol('isPublic');
export function Public() {
return SetMetadata(isPublic, true);
}
Таким образом можно вы можете гарантировать, что не произойдет коллизии в чтение/записи метаданных из ваших объектов.

Стоит еще знать об Symbol.for и Symbol.keyFor, которые позволяют работать с shared Symbol. По своей сути это глобальные переменные в shared Symbol scope, поэтому опытные программисты стараются их избегать.
www.typescriptlang.org Documentation - Symbols Using the JavaScript Symbol primitive in TypeScript
  • 👍 2
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →