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
letdata: any="Hello";
data=42;// Ошибки не будет
```
2.**`unknown`** - Более безопасная альтернатива any. Тип переменной должен быть уточнён перед использованием.
```ts
letvalue: unknown="Hello";
if(typeofvalue==="string"){
console.log(value.toUpperCase());// Безопасно
}
```
3.**`void`** - Используется для функций, которые не возвращают значение.
```ts
functionlogMessage():void{
console.log("Hello");
}
```
4.**`never`** - Используется для функций, которые никогда не завершаются (например, выбрасывают исключение или работают бесконечно).
```ts
functionthrowError(message: string):never{
thrownewError(message);
}
```
## 3. Объектные типы (Object Types)
Эти типы используются для описания сложных структур данных.
1.**`object`** - Общий тип для объектов.
```ts
letuser: object={name:"Alice",age: 25};
```
2.**Массивы (Arrays)** - Массивы могут быть описаны двумя способами:
- **`тип[]`**
- **`Array<тип>`**
```ts
letnumbers: number[]=[1,2,3];
letnames: Array<string>=["Alice","Bob"];
```
3.**Кортежи (Tuples)** - Массивы фиксированной длины с определёнными типами для каждого элемента.
```ts
letuser:[string,number]=["Alice",25];
```
4.**Функции (Functions)** - Типы для аргументов и возвращаемых значений функций.
```ts
functionadd(a: number,b: number):number{
returna+b;
}
```
5.**Классы (Classes)** - TypeScript поддерживает ООП, включая классы, наследование и модификаторы доступа.
```ts
classUser{
name: string;
constructor(name: string){
this.name=name;
}
}
```
## 4. Продвинутые типы
Эти типы позволяют создавать более гибкие и мощные структуры данных.
1.**Интерфейсы (Interfaces)** - Используются для описания структуры объектов.
```ts
interfaceUser{
name: string;
age: number;
}
letuser: User={name:"Alice",age: 25};
```
2.**Типы-объединения (Union Types)** - Переменная может иметь один из нескольких типов.
```ts
letid: string|number="123";
id=123;// Ошибки не будет
```
3.**Типы-пересечения (Intersection Types)** - Комбинирует несколько типов в один.
```ts
interfaceName{
name: string;
}
interfaceAge{
age: number;
}
typeUser=Name&Age;
letuser: User={name:"Alice",age: 25};
```
4.**Литеральные типы (Literal Types)** - Переменная может принимать только определённые значения.
```ts
letdirection:"left"|"right"|"up"|"down"="left";
```
5.**Типы-шаблоны (Generics)** - Позволяют создавать универсальные компоненты, которые работают с разными типами.
```ts
functionidentity<T>(arg: T):T{
returnarg;
}
letoutput=identity<string>("Hello");
```
## 5. Дополнительные типы
1.**`enum`** - Перечисления, которые позволяют задавать именованные константы.
```ts
enumColor{
Red,
Green,
Blue,
}
letcolor: Color=Color.Red;
```
2.**Типы для работы с DOM** - TypeScript предоставляет встроенные типы для работы с DOM-элементами, например, **`HTMLElement`**, **`HTMLInputElement`** и т.д.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.