Зарегистрируйтесь, чтобы продолжить обучение

Переменные Основы Typescript

В этом уроке мы узнаем, чем отличаются TypeScript и JavaScript в плане работы с переменными. Мы разберем, что такое вывод типов и зачем это нужно в программировании. Также узнаем, почему в TypeScript можно не указывать вручную тип переменных.

Вывод типов

Переменные и константы в TypeScript определяются так же, как и в JavaScript:

let age = 10;

let company = 'Hexlet';
let user = {
  firstName: 'Miro',
};
let fruits = ['apple', 'banana'];

При этом TypeScript выполняет дополнительную работу на фоне. Он автоматически связывает переменную или константу с типом данных начального значения. В программировании такой процесс называется выводом типов. Тип переменной поменяться не может:

let age = 10;
// Все нормально, тип тот же (Number)
age = 11.1;

// Type 'string' is not assignable to type 'number'.
age = 'some string'; // Error!

Если мы попытаемся передать эту переменную в метод, который ожидает другой тип, то это тоже приведет к ошибке:

// Argument of type 'number' is not assignable to parameter
// of type '(substring: string, ...args: any[])
'hexlet'.replace('xl', age);

Статическая типизация накладывает ограничение на массивы. Внутри могут храниться данные только одного типа:

let items = [1, 2, 3];
items.push(4); // Все хорошо

// Argument of type 'string' is not assignable to parameter of type 'number'.
items.push('code-basics'); // Error!

С объектами ситуация еще строже. В TypeScript нельзя не только менять тип свойств внутри объекта, но и добавлять новые свойства динамически:

let user = {
  firstName: 'Miro',
};

// Property 'lastName' does not exist on type '{ firstName: string; }'.
user.lastName = 'Smith';

Явное указание типа

TypeScript позволяет явно указывать тип переменных. Но на практике это редко нужно делать вручную, потому что вывод типов работает автоматически:

let name: string = 'Alice';
const count: number = 100;
let canPlay: boolean = true;

Null

По умолчанию в TypeScript переменные могут содержать только указанный тип без исключений, например, мы не можем присвоить null:

let age = 30;
age = null; // Error!

Такое поведение защищает нас от большого числа ошибок, связанных с отсутствием проверок на null. При этом null иногда является допустимым значением. В этом случае используется специальный Union Type:

let age: number | null = 30;
age = null;

Здесь мы указали, что тип у переменной age — это number | null. Читается это так: «число или null».

Union Type — интересная и удобная концепция, которую мы рассмотрим подробнее позже.

В этом уроке мы познакомились с переменными в TypeScript. Мы узнали, чем в плане работы с ними TypeScript отличается от JavaScript. Кроме того, мы разобрались, почему в TypeScript можно не указывать тип переменных вручную.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»