feat: add mapped types in ts section
This commit is contained in:
33
docs/typescript/09-namespaces.md
Normal file
33
docs/typescript/09-namespaces.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
---
|
||||
|
||||
# Namespaces
|
||||
|
||||
В TypeScript **namespace** (пространство имён) — это способ группировки логически связанных объектов, функций и интерфейсов. Они помогают избежать конфликтов имён в больших кодовых базах, инкапсулируя объявления внутри единого блока.
|
||||
|
||||
Основные особенности:
|
||||
- Определяются с помощью ключевого слова `namespace`.
|
||||
- Внутри можно объявлять переменные, функции, интерфейсы, классы и другие элементы.
|
||||
- Для экспорта элементов используется `export`, иначе они остаются приватными.
|
||||
- Для доступа к элементам снаружи используется `namespaceName.elementName`.
|
||||
|
||||
|
||||
```ts
|
||||
namespace MyNamespace {
|
||||
export class Person {
|
||||
constructor(public name: string) {}
|
||||
greet() {
|
||||
return `Hello, ${this.name}!`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Использование
|
||||
const user = new MyNamespace.Person("Alice");
|
||||
console.log(user.greet()); // Hello, Alice!
|
||||
```
|
||||
|
||||
**Важно: В современных проектах вместо `namespace` чаще используют модули (ES6 modules), так как они поддерживаются нативно и лучше интегрируются с инструментами сборки.**
|
||||
|
||||
🚀 **_Источник: ChatGPT_**
|
||||
Reference in New Issue
Block a user