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