Базовые типы в TypeScript
TypeScript предоставляет систему типов, которая позволяет явно указывать или автоматически выводить типы переменных, параметров функций и возвращаемых значений. Это помогает избежать ошибок и делает код понятнее.
Примитивные типы
Основные примитивные типы в TypeScript совпадают с соответствующими значениями в JavaScript:
string— текстовые данныеnumber— числа (все числа в JS/TS имеют типnumber, целые и дробные)boolean— логические значения (true/false)null— отсутствие значения (явный null)undefined— значение по умолчанию для неинициализированных переменных
Пример:
let name: string = "Alice";
let age: number = 30;
let isActive: boolean = true;
TypeScript обычно выводит эти типы автоматически, поэтому явное указание часто избыточно:
let name = "Alice"; // TypeScript выводит: string
Специальные типы
any
Тип any отключает проверку типов. Переменная типа any может принимать любое значение и использоваться в любом контексте:
let data: any = "text";
data = 42; // допустимо
data.toUpperCase(); // допустимо, но может вызвать ошибку во время выполнения
Использование any нарушает преимущества TypeScript и рекомендуется только при миграции старого кода или работе с динамическими данными, когда тип невозможно определить.
unknown
Тип unknown представляет значение, тип которого неизвестен. В отличие от any, он безопасен: TypeScript требует проверки перед использованием:
let data: unknown = "text";
// Ошибка: нельзя вызывать методы на unknown без проверки
// data.toUpperCase();
if (typeof data === "string") {
console.log(data.toUpperCase()); // теперь безопасно
}
unknown — предпочтительная замена any при работе с внешними данными (например, ответами от API).
void
Тип void означает, что функция ничего не возвращает:
function logMessage(message: string): void {
console.log(message);
}
Если функция не имеет оператора return или содержит return; без значения, её тип возвращаемого значения — void.
never
Тип never используется для функций, которые никогда не завершаются нормально — например, всегда выбрасывают ошибку или зацикливаются:
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {}
}
Тип never также возникает в случае исчерпывающей проверки типов (например, в switch), но это выходит за рамки базового уровня.