update ts
This commit is contained in:
135
docs/typescript/02-data-types.md
Normal file
135
docs/typescript/02-data-types.md
Normal file
@@ -0,0 +1,135 @@
|
||||
---
|
||||
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<string> = ["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<T>(arg: T): T {
|
||||
return arg;
|
||||
}
|
||||
let output = identity<string>("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`**).
|
||||
- Объектные типы (массивы, кортежи, функции, классы).
|
||||
- Продвинутые типы (интерфейсы, объединения, пересечения, дженерики).
|
||||
|
||||
Эти типы помогают писать более безопасный и поддерживаемый код, а также улучшают инструменты разработки, такие как автодополнение и проверка ошибок.
|
||||
Reference in New Issue
Block a user