📘 TypeScript

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

Аннотации типов

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

let name: string = "Алиса";
let age: number = 25;
let isActive: boolean = true;
let data: null = null;

// Вывод типа — TypeScript определяет сам
let city = "Москва";    // выводится как string
let count = 42;          // выводится как number

Массивы и кортежи

const numbers: number[] = [1, 2, 3, 4, 5];
const names: Array = ["Алиса", "Боб"];

// Кортеж — массив фиксированной длины с известными типами
const point: [number, number] = [10, 20];
const entry: [string, number] = ["счёт", 95];

Объединение типов (Union)

let id: string | number;
id = "abc-123";  // OK
id = 42;         // OK

function printId(id: string | number) {
    if (typeof id === "string") {
        console.log(id.toUpperCase());
    } else {
        console.log(id.toFixed(2));
    }
}

Литеральные типы и псевдонимы типов

type Direction = "up" | "down" | "left" | "right";
type Status = "pending" | "approved" | "rejected";

let move: Direction = "up";   // OK
// move = "diagonal";         // ❌ Ошибка

type Point = { x: number; y: number };
const origin: Point = { x: 0, y: 0 };

any, unknown, never

let anything: any = "hello";   // отключает проверку типов
anything = 42;                 // OK

let safe: unknown = getData(); // нужно сузить тип перед использованием
if (typeof safe === "string") {
    console.log(safe.toUpperCase());
}

function fail(msg: string): never {  // никогда не возвращает значение
    throw new Error(msg);
}