update typescript, update docs

This commit is contained in:
2025-03-25 12:56:44 +03:00
parent 3ca85754d2
commit f26d9d8512
61 changed files with 467 additions and 80 deletions

View File

@@ -3,7 +3,6 @@ sidebar_position: 2
---
# Классическая архитектура
Источник: DeepSeek
Layer-based architecture (архитектура на основе слоёв) — это подход к организации кода, при котором приложение разделяется на несколько логических слоёв, каждый из которых отвечает за определённый аспект функциональности. Этот метод широко используется как во фронтенд-, так и в бэкенд-разработке и помогает создавать структурированные, поддерживаемые и масштабируемые приложения.
@@ -107,4 +106,6 @@ src/
- Подходит для крупных проектов с множеством фич.
2. **Domain-driven Design (DDD):**
- Организация кода вокруг доменных областей (например, `user`, `order`, `product`).
- Часто используется в бэкенд-разработке.
- Часто используется в бэкенд-разработке.
🚀 **_Источник: DeepSeek_**

View File

@@ -3,7 +3,6 @@ sidebar_position: 3
---
# Atomic design
Источник: DeepSeek
Atomic Design — это методология проектирования и организации пользовательских интерфейсов, предложенная Брэдом Фростом (Brad Frost). Она основана на идее разделения интерфейса на небольшие, независимые и переиспользуемые компоненты, которые затем комбинируются для создания более сложных структур. Название методологии вдохновлено химией: так же, как молекулы состоят из атомов, интерфейсы состоят из базовых компонентов.
@@ -96,6 +95,4 @@ src/
- Когда требуется высокая согласованность интерфейса.
- В командах, где дизайнеры и разработчики тесно взаимодействуют.
🚀 **_Источник: DeepSeek_**

View File

@@ -3,7 +3,6 @@ sidebar_position: 4
---
# Доменная архитектура
Источник: DeepSeek
**Domain-Driven Design (DDD)** — это подход к разработке программного обеспечения, который фокусируется на моделировании бизнес-логики и организации кода вокруг доменных областей (бизнес-контекстов). Хотя DDD изначально был разработан для бэкенд-разработки, его принципы могут быть успешно применены и во фронтенде, особенно в сложных приложениях с богатой бизнес-логикой.
@@ -100,4 +99,6 @@ src/
## Когда использовать DDD во фронтенде
В сложных приложениях с богатой бизнес-логикой.
В командах, где разработчики и бизнес-эксперты тесно взаимодействуют.
Когда требуется высокая степень модульности и переиспользуемости.
Когда требуется высокая степень модульности и переиспользуемости.
🚀 **_Источник: DeepSeek_**

View File

@@ -3,7 +3,6 @@ sidebar_position: 5
---
# Feature slice design
Источник: DeepSeek
**Feature Slice Design (FSD)** — это методология проектирования и организации кода во фронтенд-разработке, которая фокусируется на разделении приложения на независимые, функционально завершённые блоки (срезы), каждый из которых соответствует определённой фиче (функциональности) продукта. Этот подход помогает создавать более структурированные, масштабируемые и поддерживаемые приложения.
@@ -113,4 +112,6 @@ src/
## Альтернативы:
- **Layer-based architecture** (разделение на слои, например, components, pages, store).
- **Domain-driven design (DDD)** (организация кода вокруг доменных областей).
- **Domain-driven design (DDD)** (организация кода вокруг доменных областей).
🚀 **_Источник: DeepSeek_**

View File

@@ -3,7 +3,6 @@ sidebar_position: 6
---
# Micro frontend
Источник: DeepSeek
Микрофронтенды (Micro Frontends) — это архитектурный подход, который позволяет разделить фронтенд-приложение на независимые, слабо связанные части, каждая из которых может разрабатываться, тестироваться и развертываться отдельно. Этот подход вдохновлен микросервисной архитектурой и применяется для создания масштабируемых и поддерживаемых фронтенд-приложений.
@@ -114,4 +113,6 @@ sidebar_position: 6
## Недостатки микрофронтендов:
1. Сложность интеграции: Требуется четкая организация взаимодействия между микрофронтендами.
2. Дублирование кода: Возможно дублирование общих ресурсов, если они не вынесены в отдельные модули.
3. Производительность: Загрузка нескольких микрофронтендов может увеличить время загрузки приложения.
3. Производительность: Загрузка нескольких микрофронтендов может увеличить время загрузки приложения.
🚀 **_Источник: DeepSeek_**

View File

@@ -3,7 +3,6 @@ sidebar_position: 7
---
# Test driven development
Источник: DeepSeek
TDD (Test-Driven Development) — это методология разработки программного обеспечения, в которой написание тестов предшествует написанию кода. Основная идея TDD заключается в том, что разработчик сначала пишет тест для новой функциональности, а затем реализует код, который делает этот тест успешным. Этот процесс повторяется для каждой новой функции или улучшения.
@@ -66,3 +65,4 @@ TDD основан на нескольких ключевых принципах
3. Не всегда подходит:
- TDD может быть избыточным для небольших проектов или прототипов.
🚀 **_Источник: DeepSeek_**

View File

@@ -3,8 +3,6 @@ sidebar_position: 8
---
# Принципы разработки
Источник: DeepSeek \
Дополнительный источник: [https://habr.com/ru/companies/itelma/articles/546372/](https://habr.com/ru/companies/itelma/articles/546372/)
## YAGNI
_You Arent Gonna Need It / Вам это не понадобится_
@@ -153,3 +151,6 @@ _Keep It Simple, Stupid / Будь проще_
2. **Поддерживаемость:** Упрощается понимание и исправление ошибок.
3. **Тестируемость:** Код, соответствующий SOLID, легче тестировать.
4. **Масштабируемость:** Система становится более устойчивой к изменениям и росту.
🚀 **_Источник: DeepSeek_**
ополнительный источник: [https://habr.com/ru/companies/itelma/articles/546372/](https://habr.com/ru/companies/itelma/articles/546372/)

107
docs/architecture/09-oop.md Normal file
View File

@@ -0,0 +1,107 @@
---
sidebar_position: 9
---
# ООП
Принципы ООП (Объектно-ориентированного программирования)
Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции объектов, которые объединяют данные и методы для работы с ними. Основные принципы ООП:
## 1. Инкапсуляция
**Смысл:** Объединение данных (свойств) и методов внутри объекта с контролем доступа. \
**Зачем?** Защита данных, предотвращение прямого изменения извне.
```ts
class User {
private password: string;
constructor(public name: string, password: string) {
this.password = password;
}
checkPassword(input: string): boolean {
return this.password === input;
}
}
const user = new User("Alice", "secret123");
console.log(user.checkPassword("wrong")); // false
console.log(user.checkPassword("secret123")); // true
```
📌 `private` скрывает `password`, и его нельзя изменить напрямую.
## 2. Наследование
**Смысл:** Позволяет создавать новые классы на основе существующих. \
**Зачем?** Повторное использование кода и расширение функциональности.
```ts
class Animal {
constructor(public name: string) {}
makeSound() {
console.log("Some sound...");
}
}
class Dog extends Animal {
makeSound() {
console.log("Woof!");
}
}
const dog = new Dog("Buddy");
dog.makeSound(); // Woof!
```
📌 `Dog` наследует `Animal`, но переопределяет метод `makeSound()`.
## 3. Полиморфизм
**Смысл:** Разные объекты могут иметь **одинаковый интерфейс**, но разное поведение. \
**Зачем?** Универсальный код, который работает с разными типами объектов.
```ts
class Animal {
constructor(public name: string) {}
makeSound() {
console.log("Some sound...");
}
}
class Dog extends Animal {
makeSound() {
console.log("Woof!");
}
}
const dog = new Dog("Buddy");
dog.makeSound(); // Woof!
```
📌 `Penguin` изменяет логику `fly()`, но всё ещё является `Bird`.
## 4. Абстракция
**Смысл:** Выделение **важных деталей**, скрытие реализации. \
**Зачем?** Упрощение работы с кодом, фокус только на важном.
```ts
abstract class Transport {
constructor(public speed: number) {}
abstract move(): void;
}
class Car extends Transport {
move() {
console.log(`Driving at ${this.speed} km/h`);
}
}
const car = new Car(100);
car.move(); // Driving at 100 km/h
```
📌 `abstract` запрещает создавать `Transport`, но заставляет `Car` реализовать `move()`.
## Итог
-**Инкапсуляция** — скрываем детали и контролируем доступ.
-**Наследование** — создаём новые классы на основе существующих.
-**Полиморфизм** — разные классы могут вести себя по-разному.
-**Абстракция** — скрываем сложные детали, оставляем главное.
🚀 ООП помогает писать **гибкий, переиспользуемый и читаемый код!**
🚀 **_Источник: ChatGPT_**