Jet School Logo

Что такое Типы данных?

Data Types (Типы данных) — в программировании это классификация, которая определяет, к какому виду данных относится значение и какие операции с ним можно выполнять. Для компьютера 25, "25" и true — совершенно разные вещи: первое — число, и его можно складывать; второе — текст, и его можно склеивать; третье — логическое значение, и оно используется в условиях. Каждая переменная хранит данные определённого типа. Примеры в этой статье написаны на языке JavaScript.


Основные цели типов данных:

  1. Определение вида данных – сообщение компьютеру о том, что значение является числом, текстом или данными другого вида.
  2. Обеспечение правильных операций – возможность выполнять для каждого типа подходящие операции (складывать числа, склеивать тексты).
  3. Правильное использование памяти – обеспечение того, чтобы разные типы по-разному хранились в памяти.
  4. Предотвращение ошибок – помощь в заблаговременном обнаружении ошибки или неожиданного результата при выполнении операции с несовместимыми типами.


Основные типы данных в JavaScript

В JavaScript типы данных делятся на две группы: примитивные (простые) и ссылочные (reference) типы.

Примитивные типы:

let name = "Айсель"; // String – текст

let age = 14; // Number – число

let price = 9.99; // Number – десятичное число тоже Number

let isStudent = true; // Boolean – логическое значение

let city; // Undefined – значение не задано

let score = null; // Null – «пустое» значение, заданное намеренно

let big = 12345678901234567890n; // BigInt – очень большие целые числа

let id = Symbol("id"); // Symbol – уникальный идентификатор

Ссылочные (reference) типы:

let student = { name: "Айсель", age: 14 }; // Object

let colors = ["красный", "синий", "зелёный"]; // Array

let greet = function () { return "Привет"; }; // Function

Здесь Object хранит пары «ключ-значение», Array — упорядоченный список, а функция — блок кода, который можно использовать повторно.


Как проверить тип?

В JavaScript тип значения можно узнать с помощью оператора typeof:

console.log(typeof "Привет"); // "string"

console.log(typeof 42); // "number"

console.log(typeof true); // "boolean"

console.log(typeof undefined); // "undefined"

console.log(typeof {}); // "object"

console.log(typeof []); // "object" (массив тоже выглядит как объект)

console.log(Array.isArray([])); // true (для точной проверки массива)

Например: когда пользователь заполняет регистрационную форму, имя хранится как String, возраст — как Number, а флажок «принимаю условия» — как Boolean. На основании этих типов программа может проверить, что возраст — это число, и сравнить, больше ли он 18.

Разница между статической и динамической типизацией:

  • Статическая типизация (Java, C++, TypeScript) – тип переменной объявляется заранее и впоследствии не может быть изменён. Ошибки типов обнаруживаются на этапе компиляции.
  • Динамическая типизация (JavaScript, Python) – тип переменной определяется автоматически по значению и может меняться во время работы программы.

let value = 10; // Number

value = "десять"; // теперь String – JavaScript это позволяет

Динамическая типизация гибка, но при невнимательном написании может привести к неожиданным ошибкам.


Преобразование типов (Type Conversion)

Иногда значение нужно преобразовать из одного типа в другой. Это может быть явное (explicit) или автоматическое (implicit) преобразование:

// Явное преобразование

Number("25"); // 25

String(25); // "25"

Boolean(0); // false

parseInt("42px"); // 42

// Автоматическое преобразование (JavaScript делает сам)

console.log("5" + 2); // "52" (число превращается в текст, происходит склейка)

console.log("5" - 2); // 3 (текст превращается в число, происходит вычитание)

Самые частые ловушки, с которыми сталкиваются начинающие:

  1. typeof null – результат — "object"; это историческая ошибка JavaScript, сам же null является примитивным типом.
  2. Десятичные вычисления – результат 0.1 + 0.2 равен не 0.3, а 0.30000000000000004. Это связано с тем, что числа хранятся в памяти в двоичной системе.
  3. "5" + 2 и "5" - 2 – выражения, которые выглядят одинаково, дают совершенно разные результаты в зависимости от типа.
  4. Разница между == и === – == сравнивает с преобразованием типов ("5" == 5 → true), а === проверяет ещё и тип ("5" === 5 → false). Рекомендуется использовать ===.

Разница между примитивными и ссылочными типами:

Примитивные типы передаются копированием в переменную — если изменится одна, другая не затрагивается. Ссылочные типы (Object, Array) передаются по ссылке на адрес в памяти — две переменные могут указывать на одни и те же данные.

let a = 5;

let b = a;

b = 10;

console.log(a); // 5 (a не изменилась)

let obj1 = { x: 1 };

let obj2 = obj1;

obj2.x = 99;

console.log(obj1.x); // 99 (obj1 тоже изменился, так как указывает на тот же объект)

Дополнительные типы, встречающиеся в других языках:

  1. Integer (int) – целые числа (например, 7, -3).
  2. Float / Double – числа с десятичной дробью (например, 3.14).
  3. Char – одиночный символ (например, 'A').
  4. Dictionary – пары «ключ-значение» (в Python).
  5. Tuple – неизменяемая упорядоченная совокупность значений (в Python).

Преимущества типов данных:

  • Обеспечивают правильную и предсказуемую работу программы
  • Помогают на раннем этапе обнаружить ошибки типов
  • Облегчают читабельность кода и его понимание другими программистами
  • Создают условия для эффективного использования памяти
  • Позволяют выбрать правильную операцию (вычисление с числом, склейка с текстом)

Простое сравнение:

Представьте, что типы данных — это разные виды ёмкостей: бутылка для воды, мешок для муки, картонная коробка для яиц. Каждая ёмкость подходит для своего содержимого: если налить воду в мешок, она вытечет, а муку в бутылку насыпать трудно. В программировании тоже каждое данное хранится и используется в соответствии со своим типом.

Хотите применить эти знания на практике и получить реальные результаты? Начните обучение шаг за шагом с нашим курсом IT и компьютерной инженерии. Для получения подробной информации перейдите по ссылке: Курс «IT и Компьютерная инженерия».

Заполните форму чтобы узнать больше о наших IT курсах

Начни изучать IT уже сегодня