Skip to main content

Что означает конструкция: const loadedPaths = new Set<string>();

Эта конструкция означает:
👉 создаётся пустое множество (Set) строк, которое будет хранить уникальные значения.

Разберём по частям 👇


Разбор строки

const loadedPaths = new Set<string>();

1️⃣ Set

Set — это встроенная структура данных в JavaScript.

Она:

  • хранит уникальные значения

  • не допускает дубликатов

  • быстро проверяет наличие элемента

Пример:

const s = new Set();
s.add('/login');
s.add('/login');
console.log(s.size); // 1

2️⃣ <string>

Это TypeScript-тип.

Set<string>

означает:

  • в Set можно положить только строки

  • TypeScript будет ругаться, если положить число или объект

loadedPaths.add('/users'); // ✅
loadedPaths.add(123);      // ❌ ошибка TS

3️⃣ new Set()

Создаёт новый пустой Set.

На старте:

loadedPaths.size === 0

Зачем это обычно используют

🔹 Отслеживать уже обработанные маршруты

if (!loadedPaths.has(to.path)) {
  loadRoute(to.path)
  loadedPaths.add(to.path)
}

🔹 Не выполнять один и тот же код дважды

if (loadedPaths.has(key)) return

🔹 Кешировать результаты

loadedPaths.add('/profile')

Почему не массив (string[])

Set Array
Гарантирует уникальность Нужно проверять вручную
Быстро has() Медленно includes()
Нет дубликатов Легко ошибиться

В контексте vue-router (часто)

const loadedPaths = new Set<string>();

router.beforeEach((to) => {
  if (loadedPaths.has(to.path)) return

  loadedPaths.add(to.path)
  // динамическая загрузка роутов
})

Коротко

const loadedPaths = new Set<string>();
👉 хранилище уникальных строк, обычно для контроля «что уже было обработано»