логотип PurpleSchool
Иконка входа
Вход
  • Обучение
  • Войти
логотип PurpleSchool

Переменные и константы в TypeScript

Автор

Дмитрий Нечаев

Переменные и константы — основные элементы программирования, используемые для хранения данных. В TypeScript, как и во многих других языках программирования, переменные используются для хранения значений, которые могут изменяться в ходе выполнения программы, а константы — для значений, которые остаются неизменными. Рассмотрим эту тему более подробно.

Объявление переменных

В TypeScript переменные можно объявлять с помощью ключевых слов var, let и const.

  1. var: это старый способ объявления переменных. Переменные, объявленные с помощью var, имеют функциональную область видимости или глобальную, если объявлены вне функции. Также они подвержены подъему (hoisting).
function exampleVar() {
    console.log(a); // undefined из-за подъема
    var a = 10;
    console.log(a); // 10
}
exampleVar();
  1. let: это современный способ объявления переменных. Переменные, объявленные с помощью let, имеют блочную область видимости (область видимости ограничена блоком, в котором они объявлены) и также подвержены подъему, но не инициализируются.
function exampleLet() {
    // console.log(b); // Ошибка: инициализация еще не произошла
    let b = 20;
    console.log(b); // 20
}
exampleLet();
  1. const: используется для объявления констант, то есть значений, которые не могут быть переопределены после их инициализации. Они также имеют блочную область видимости.
const c = 30;
// c = 40; // Ошибка: невозможно присвоить новое значение константе
console.log(c); // 30

Типы данных

TypeScript является строго типизированным языком, что означает, что при объявлении переменных можно указывать их типы. Это помогает избежать многих ошибок на этапе компиляции.

let num: number = 5; // Число
let str: string = "Hello, TypeScript!"; // Строка
let isActive: boolean = true; // Логическое значение

// Массивы
let numbers: number[] = [1, 2, 3, 4, 5];
let strings: Array<string> = ["one", "two", "three"];

// Кортежи
let tuple: [string, number] = ["age", 25];

// Перечисления
enum Color { Red, Green, Blue }
let color: Color = Color.Green;

// Any - любой тип
let anything: any = "Could be anything";
anything = 10; // Теперь это число

Константы и объекты

Важно понимать, что в случае с объектами и массивами, объявленными как const, нельзя изменить сам объект или массив, но можно изменять их свойства или элементы.

const obj = { name: "Alice", age: 30 };
obj.name = "Bob"; // Это допустимо
// obj = { name: "Charlie", age: 25 }; // Ошибка: нельзя переопределить константу

const arr = [1, 2, 3];
arr.push(4); // Это допустимо
// arr = [4, 5, 6]; // Ошибка: нельзя переопределить константу

Область видимости

Область видимости переменных, объявленных с помощью let и const, ограничена блоком кода, в котором они объявлены. Рассмотрим это на примере:

function exampleScope() {
    let x = 10;
    if (true) {
        let x = 20; // Это другая переменная, существует только внутри блока if
        console.log(x); // 20
    }
    console.log(x); // 10
}
exampleScope();

Инициализация и подъем (hoisting)

Переменные, объявленные с помощью var, поднимаются к началу их области видимости, но их значения не поднимаются. В случае с let и const переменные также поднимаются, но остаются недоступными до момента их инициализации, что приводит к ошибке при попытке доступа до инициализации.

console.log(d); // undefined (подъем переменной var)
var d = 10;

// console.log(e); // Ошибка: инициализация еще не произошла
let e = 20;

// console.log(f); // Ошибка: инициализация еще не произошла
const f = 30;

Заключение

Переменные и константы играют ключевую роль в программировании на TypeScript. Использование let и const предпочтительнее, так как они предоставляют более строгую и предсказуемую модель управления областью видимости, чем var. Типизация в TypeScript помогает избежать многих ошибок, предоставляя возможность явно указывать типы данных для переменных. Константы позволяют работать с неизменяемыми данными, что также способствует надежности кода.

Эти основные концепции и их правильное применение помогут разработчикам создавать более безопасные и поддерживаемые приложения на TypeScript.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile