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

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

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

---

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

```ts
const loadedPaths = new Set<string>();

```

### 1️⃣ `Set`

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

Она:

- хранит **уникальные значения**
- не допускает дубликатов
- быстро проверяет наличие элемента

Пример:

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

```

---

### 2️⃣ `<string>`

Это **TypeScript-тип**.

```ts
Set<string>

```

означает:

- в `Set` можно положить **только строки**
- TypeScript будет ругаться, если положить число или объект

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

```

---

### 3️⃣ `new Set()`

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

На старте:

```ts
loadedPaths.size === 0

```

---

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

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

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

```

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

```ts
if (loadedPaths.has(key)) return

```

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

```ts
loadedPaths.add('/profile')

```

---

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

<table id="bkmrk-set-array-%D0%93%D0%B0%D1%80%D0%B0%D0%BD%D1%82%D0%B8%D1%80%D1%83%D0%B5"><thead><tr><th>Set</th><th>Array</th></tr></thead><tbody><tr><td>Гарантирует уникальность</td><td>Нужно проверять вручную</td></tr><tr><td>Быстро `has()`</td><td>Медленно `includes()`</td></tr><tr><td>Нет дубликатов</td><td>Легко ошибиться</td></tr></tbody></table>

---

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

```ts
const loadedPaths = new Set<string>();

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

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

```

---

## Коротко

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