TypeScript — это JavaScript с типами, что логично. А вот и они, слева направо:
Boolean (булев тип)
Тип данных Boolean представляет логическое значение true
или false
. Вот пример:
let isWrote: boolean = false;
Что может пойти не так. Если мы не укажем тип и присвоим значение, не являющееся булевым, мы можем получить неожиданный результат, например, строка будет оценена как true
.
let isDone: boolean = false;
if (isDone === "false") { // Ошибка: Это условие всегда будет ложным, поскольку типы 'boolean' и 'string' не пересекаются.
console.log("This should not be printed");
}
В этом примере мы правильно определили переменную isDone
как булеву. Однако когда мы сравним isDone
со строкой "false"
с помощью оператора строгого равенства ===
, TypeScript выдаст ошибку типа, поскольку эти два типа не пересекаются. Чтобы исправить эту ошибку, нам нужно сравнить isDone
с булевым значением false
, как показано ниже:
let isDone: boolean = false;
if (isDone === false) { // Ошибки нет
console.log("Этот текст выведется");
}
Number (число)
Тип данных Number представляет как целочисленные значения, так и значения с плавающей точкой. Вот пример использования для чисел разных типов, включая шестнадцатеричные, двоичные и восьмеричные.
let myNumber: number = 6;
Что может пойти не так. Если мы попытаемся присвоить переменной с типом Number
нечисловое значение, мы можем получить NaN
(Not a Number).
let count: number = "5"; // Error: Type 'string' is not assignable to type 'number'.
let result = count * 2;
console.log(result);
В этом примере мы определили переменную count
как число. Однако когда мы попытаемся присвоить count
строку "5"
, TypeScript выдаст ошибку типа, поскольку эти два типа несовместимы. Чтобы исправить эту ошибку, нам нужно присвоить count
число, как показано ниже:
let count: number = 5;
let result = count * 2;
console.log(result); // Выведется 10
String (строка)
Тип данных String представляет собой последовательность символов.
let color: string = "red";
Что может пойти не так. Если мы используем двойные кавычки для строки с одинарными кавычками или наоборот, TypeScript выдаст ошибку.
Array (массив)
Тип данных Array представляет собой коллекцию элементов одного типа.
let list: number[] = [1, 2, 3];
Что может пойти не так. Если мы попытаемся добавить элемент другого типа, TypeScript выдаст ошибку.
let list: number[] = [1, 2, 3];
list.push("four"); // Error: Argument of type 'string' is not assignable to parameter of type 'number'
В этом примере мы определили переменную list
как массив чисел. Однако когда мы попытаемся поместить строку "four"
в массив list
, TypeScript выдаст ошибку типа, поскольку строки не могут быть присвоены числам. Чтобы исправить эту ошибку, нам нужно либо удалить элемент строки, либо изменить переменную list
на массив строк, как показано ниже:
// Вариант 1: не добавлять строковую переменную
let list: number[] = [1, 2, 3];
list.push(4);
console.log(list); // Вывод: [1, 2, 3, 4]
// Вариант два: использовать массив строк
let list: string[] = ["one", "two", "three"];
list.push("four");
console.log(list); // Output: ["one", "two", "three", "four"]
Tuple (кортеж)
Тип данных Tuple представляет собой массив с фиксированным количеством элементов разных типов.
let x: [string, number];
x = ["привет", 10];
Что может пойти не так. Если мы попытаемся добавить больше или меньше элементов, чем заданное число, TypeScript выдаст ошибку.
Enum (перечисление)
Тип данных Enum представляет собой набор именованных констант.
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green;
Что может пойти не так. Если мы попытаемся присвоить значение, которого нет в наборе именованных констант, TypeScript выдаст ошибку.
Any
Тип данных Any представляет любой тип.
let notSure: any = 4;
notSure = "может быть, вместо этого строка";
notSure = false;
Что может пойти не так. Использование Any противоречит идее TypeScript, поскольку Any позволяет присваивать переменной любой тип.