JavaScript & TypeScriptМодуль 7: Основы TypeScript
Базовые типы
Примитивные типы в TypeScript
Цель урока
В этом уроке ты научишься:
- Использовать примитивные типы
- Понимать
any,unknown,void,never - Работать с
nullиundefined
Примитивные типы
// Строка
let name: string = "Иван";
// Число
let age: number = 25;
let price: number = 99.99;
// Логический
let isActive: boolean = true;any
Отключает проверку типов:
let value: any = "строка";
value = 123; // OK
value = true; // OK
value.foo(); // OK (но ошибка в рантайме!)Избегай any
any убивает смысл TypeScript. Используй только в крайних случаях.
unknown
Безопасная альтернатива any:
let value: unknown = "строка";
// value.toUpperCase(); // Ошибка!
// Нужна проверка типа
if (typeof value === "string") {
console.log(value.toUpperCase()); // OK
}void
Функция ничего не возвращает:
function log(message: string): void {
console.log(message);
}
// void !== undefined
let result: void = undefined; // OK
// let result: void = null; // Ошибка в strict modenever
Функция никогда не завершается:
// Выбрасывает ошибку
function throwError(message: string): never {
throw new Error(message);
}
// Бесконечный цикл
function infiniteLoop(): never {
while (true) {}
}null и undefined
let u: undefined = undefined;
let n: null = null;
// С strictNullChecks
let name: string = null; // Ошибка!
// Нужен union type
let name: string | null = null;Приведение типов
Type Assertion
let value: unknown = "hello";
// Способ 1: as
let str: string = value as string;
// Способ 2: угловые скобки
let str2: string = <string>value;
console.log(str.toUpperCase()); // "HELLO"Осторожно
Type assertion не проверяет тип в рантайме. Используй только когда уверен.
Проверка типов
function process(value: unknown) {
if (typeof value === "string") {
console.log(value.toUpperCase());
} else if (typeof value === "number") {
console.log(value.toFixed(2));
}
}
process("hello"); // "HELLO"
process(3.14159); // "3.14"Сводная таблица
| Тип | Описание |
|---|---|
string | Строка |
number | Число |
boolean | true/false |
any | Любой тип (небезопасно) |
unknown | Неизвестный тип (безопасно) |
void | Отсутствие значения |
never | Никогда не возвращает |
null | Пустое значение |
undefined | Не определено |
Практика
Задание 1: Базовые типы
Задача: Объяви переменные правильных типов.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
Задача 5 false
Задание 2: unknown
Задача: Безопасно обработай unknown.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
HELLO
Задание 3: void
Задача: Создай функцию с типом void.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
Привет, Мир!
Проверь себя
- Чем
anyотличается отunknown? - Когда использовать
void? - Когда использовать
never?