Урок 03

Базовые типы

TypeScript расширяет JavaScript системой типов. Тип указывается после переменной через двоеточие.

Примитивы

let name: string = 'Алиса';
let age: number = 25;
let isActive: boolean = true;
let nothing: null = null;
let notDefined: undefined = undefined;

number

Все числа — number: целые, дробные, отрицательные.

let count: number = 42;
let price: number = 9.99;
let hex: number = 0xff;

Нет отдельных int, float, double — только number.

string

let firstName: string = 'Иван';
let greeting: string = `Привет, ${firstName}`;

Одинарные, двойные кавычки и шаблонные строки — всё string.

boolean

let isDone: boolean = false;
let isGreater: boolean = 10 > 5;

Массивы

Два синтаксиса:

let numbers: number[] = [1, 2, 3];
let names: Array<string> = ['Алиса', 'Боб'];

Оба эквивалентны.

Объекты

let user: { name: string; age: number } = {
    name: 'Алиса',
    age: 25,
};

Или через interface / type.

Функции

function add(a: number, b: number): number {
    return a + b;
}

const multiply = (a: number, b: number): number => a * b;

Тип возвращаемого значения — после скобок.

Если функция ничего не возвращает:

function log(message: string): void {
    console.log(message);
}

Необязательные параметры

function greet(name: string, title?: string): string {
    return title ? `${title} ${name}` : name;
}

Знак ? — параметр опциональный.

Значения по умолчанию

function greet(name: string, title: string = 'Гость'): string {
    return `${title} ${name}`;
}

any

any отключает проверку типа:

let data: any = 'строка';
data = 42;
data = { foo: 'bar' };
data.nonexistent(); // ошибка не покажется

any — избегай. Он ломает всю пользу TypeScript. Используй unknown вместо него.

unknown

Похож на any, но требует проверки перед использованием:

let data: unknown = 'строка';

if (typeof data === 'string') {
    console.log(data.toUpperCase());
}

unknown безопасен: нельзя использовать без проверки типа.

never

Тип для значений, которых не бывает:

function fail(message: string): never {
    throw new Error(message);
}

Функция, которая всегда выбрасывает исключение или бесконечно цикл.

void

function log(message: string): void {
    console.log(message);
}

Означает «функция ничего не возвращает».

Вывод типов

Если тип очевиден — TypeScript выведет его сам:

let name = 'Алиса';        // string
let age = 25;              // number
let active = true;         // boolean
let numbers = [1, 2, 3];   // number[]

Явно указывать тип нужно, когда вывод неочевиден или когда хочешь зафиксировать конкретный тип.

Итоги

  • Тип указывается через :
  • Примитивы: string, number, boolean, null, undefined
  • Массивы: number[] или Array<number>
  • Функции: тип аргументов и возвращаемого значения
  • any — отключает проверки, избегай
  • unknown — безопасный any
  • never — для невозможных значений
  • void — для функций без возврата