Базовые типы
Урок: Базовые типы в TypeScript (string, number, boolean, any)
Введение
В прошлом уроке мы говорили о том, что TypeScript помогает заранее понимать, какие данные мы используем, и находить ошибки ещё до запуска кода.
Но возникает логичный вопрос: а как именно TypeScript «понимает», что за данные у нас есть?
Ответ — через типы.
Представь, что ты заполняешь форму на сайте:
- в поле «Имя» — текст;
- в поле «Возраст» — число;
- в чекбоксе — да или нет.
Если в поле возраста ввести «двадцать», форма, скорее всего, не примет это значение. TypeScript делает примерно то же самое, только в коде.
В этом уроке мы разберём самые базовые типы, с которых начинается вся работа в TypeScript. Это фундамент, на котором будут строиться все следующие темы.
Что такое тип в TypeScript
Тип — это описание того, какие данные может содержать переменная.
Когда ты пишешь:
let message: string = 'Hello';
console.log('старт:', message, typeof message);
// message = 123; // ошибка TS: number нельзя присвоить string
console.log('тип message остаётся string');
ты говоришь:
message— это переменная;string— это её тип (строка);- значит, в неё можно записывать только текст.
TypeScript сразу покажет проблему при присваивании числа; в JavaScript без аннотаций перезапись выполнилась бы.
Таким образом, тип — это ограничение, которое помогает не допускать ошибок.
Тип string
Тип string используется для текстовых значений.
const username: string = 'Alex';
const greetingText: string = 'Hello, world!';
Что важно понимать:
- строка — это любой текст;
- можно использовать одинарные, двойные кавычки или шаблонные строки.
Пример:
let name: string = 'Alex';
let greeting: string = `Hello, ${name}`;
console.log('шаблонная строка:', greeting);
// name = 42; // ошибка TS: number нельзя присвоить string
console.log('name остаётся строкой:', name);
Здесь:
${name}— это подстановка значения внутрь строки;- такие строки называются шаблонными.
TypeScript не позволит записать число в переменную, объявленную как строка.
Тип number
Тип number используется для всех чисел.
let age: number = 25;
let price: number = 99.99;
console.log('числа:', age, price);
// age = '25'; // ошибка TS: string нельзя присвоить number
console.log('age по-прежнему number:', age);
В TypeScript (как и в JavaScript):
- нет отдельного типа для целых и дробных чисел;
- всё — это
number.
Даже если значение выглядит как число, но записано как строка — это уже другой тип.
Тип boolean
Тип boolean — это логическое значение: true или false.
const isLoggedIn: boolean = true;
const isAdmin: boolean = false;
Этот тип часто используется:
- в условиях (
if); - для флагов (включено/выключено);
- для проверки состояний.
Пример:
let isActive: boolean = true;
if (isActive) {
console.log('Пользователь активен');
}
// isActive = 'yes'; // ошибка TS: string нельзя присвоить boolean
console.log('флаг boolean:', isActive);
TypeScript не даст записать строку в переменную типа boolean.
Тип any — когда можно всё
Тип any — это особый случай.
Он говорит: «в эту переменную можно записать что угодно».
let data: any = 'Hello';
data = 123;
data = true;
data = { name: 'Alex' };
TypeScript перестаёт проверять типы для такой переменной.
На первый взгляд это удобно, но есть проблема.
Пример:
let value: any = 123;
try {
(value as any).toUpperCase();
} catch (e: unknown) {
const msg = e instanceof Error ? e.message : String(e);
console.log('с any TS не ругается, а в рантайме:', msg);
}
Почему так происходит:
- TypeScript «не знает», что внутри
value; - он не может проверить корректность вызова метода.
Когда использовать any
Тип any стоит использовать очень осторожно.
Он может быть полезен:
- когда ты работаешь с неизвестными данными (например, ответ от сервера);
- на ранних этапах разработки;
- при постепенном переходе с JavaScript на TypeScript.
Но в большинстве случаев лучше избегать any, потому что:
- он отключает основное преимущество TypeScript — проверку типов;
- ошибки снова начинают появляться во время выполнения.
Как TypeScript может сам определить тип
Иногда TypeScript сам понимает тип без явного указания.
const city = 'Helsinki';
console.log('TS вывел тип string из литерала, typeof в рантайме:', typeof city);
Это называется выведение типов (type inference).
Но явное указание типов всё равно важно:
- делает код понятнее;
- помогает избежать неоднозначностей;
- особенно полезно в функциях (что мы разберём в следующих уроках).
Связь с дальнейшими уроками
В этом уроке ты познакомился с базовыми типами:
stringnumberbooleanany
Дальше мы будем использовать их постоянно:
- в переменных;
- в функциях;
- в объектах;
- в тестах Playwright.
Следующий шаг — научиться применять эти типы в реальном коде: типизировать переменные и функции.
Где это применяется на практике
Базовые типы используются везде:
- имя пользователя —
string; - возраст —
number; - статус авторизации —
boolean; - временные данные (иногда) —
any.
Пример из реальной логики:
const username: string = 'Alex';
const age: number = 30;
const isLoggedIn: boolean = true;
Такой код:
- легче читать;
- проще поддерживать;
- безопаснее изменять.
Итоговое понимание
Базовые типы — это основа TypeScript.
Они позволяют точно описать, какие данные используются в коде, и не дают случайно подставить неподходящее значение.
Главная идея урока:
TypeScript заставляет тебя явно думать о данных, с которыми ты работаешь, и тем самым предотвращает ошибки ещё на этапе написания кода.
Именно эти простые типы станут строительными блоками для всего, что мы будем делать дальше — от функций до Page Object в Playwright.