--- sidebar_position: 2 --- # Типы данных TypeScript — это строго типизированный язык программирования, который расширяет JavaScript, добавляя статическую типизацию. В TypeScript используются как **базовые типы данных** (примитивы), так и **продвинутые типы**, которые позволяют более точно описывать структуру данных. Вот основные типы данных в TypeScript: ## 1. Примитивные типы (Primitive Types) 1. **`number`** - Числа, включая целые и дробные. 2. **`string`** - Строки текста. 3. **`boolean`** - логические значения: true или false. 4. **`null`** - Значение, представляющее отсутствие значения. 5. **`undefined`** - Значение, которое присваивается переменной, если она не инициализирована. 6. **`symbol`** - Уникальные и неизменяемые значения, часто используемые как ключи объектов. ## 2. Специальные типы Эти типы используются для описания специфических случаев. 1. **`any`** - Отключает проверку типов. Переменная может хранить любое значение. ```ts let data: any = "Hello"; data = 42; // Ошибки не будет ``` 2. **`unknown`** - Более безопасная альтернатива any. Тип переменной должен быть уточнён перед использованием. ```ts let value: unknown = "Hello"; if (typeof value === "string") { console.log(value.toUpperCase()); // Безопасно } ``` 3. **`void`** - Используется для функций, которые не возвращают значение. ```ts function logMessage(): void { console.log("Hello"); } ``` 4. **`never`** - Используется для функций, которые никогда не завершаются (например, выбрасывают исключение или работают бесконечно). ```ts function throwError(message: string): never { throw new Error(message); } ``` ## 3. Объектные типы (Object Types) Эти типы используются для описания сложных структур данных. 1. **`object`** - Общий тип для объектов. ```ts let user: object = { name: "Alice", age: 25 }; ``` 2. **Массивы (Arrays)** - Массивы могут быть описаны двумя способами: - **`тип[]`** - **`Array<тип>`** ```ts let numbers: number[] = [1, 2, 3]; let names: Array = ["Alice", "Bob"]; ``` 3. **Кортежи (Tuples)** - Массивы фиксированной длины с определёнными типами для каждого элемента. ```ts let user: [string, number] = ["Alice", 25]; ``` 4. **Функции (Functions)** - Типы для аргументов и возвращаемых значений функций. ```ts function add(a: number, b: number): number { return a + b; } ``` 5. **Классы (Classes)** - TypeScript поддерживает ООП, включая классы, наследование и модификаторы доступа. ```ts class User { name: string; constructor(name: string) { this.name = name; } } ``` ## 4. Продвинутые типы Эти типы позволяют создавать более гибкие и мощные структуры данных. 1. **Интерфейсы (Interfaces)** - Используются для описания структуры объектов. ```ts interface User { name: string; age: number; } let user: User = { name: "Alice", age: 25 }; ``` 2. **Типы-объединения (Union Types)** - Переменная может иметь один из нескольких типов. ```ts let id: string | number = "123"; id = 123; // Ошибки не будет ``` 3. **Типы-пересечения (Intersection Types)** - Комбинирует несколько типов в один. ```ts interface Name { name: string; } interface Age { age: number; } type User = Name & Age; let user: User = { name: "Alice", age: 25 }; ``` 4. **Литеральные типы (Literal Types)** - Переменная может принимать только определённые значения. ```ts let direction: "left" | "right" | "up" | "down" = "left"; ``` 5. **Типы-шаблоны (Generics)** - Позволяют создавать универсальные компоненты, которые работают с разными типами. ```ts function identity(arg: T): T { return arg; } let output = identity("Hello"); ``` ## 5. Дополнительные типы 1. **`enum`** - Перечисления, которые позволяют задавать именованные константы. ```ts enum Color { Red, Green, Blue, } let color: Color = Color.Red; ``` 2. **Типы для работы с DOM** - TypeScript предоставляет встроенные типы для работы с DOM-элементами, например, **`HTMLElement`**, **`HTMLInputElement`** и т.д. ```ts const element: HTMLElement = document.getElementById("myElement"); ``` ## Итог TypeScript предоставляет богатую систему типов, которая включает: - Примитивные типы (**`number`**, **`string`**, **`boolean`** и т.д.). - Специальные типы (**`any`**, **`unknown`**, **`void`**, **`never`**). - Объектные типы (массивы, кортежи, функции, классы). - Продвинутые типы (интерфейсы, объединения, пересечения, дженерики). Эти типы помогают писать более безопасный и поддерживаемый код, а также улучшают инструменты разработки, такие как автодополнение и проверка ошибок. 🚀 **_Источник: DeepSeek_**