Typescript. Основное использование типов
Базовое использование типов в typescript
В прошлой статье мы поставили typescript
и научились запускать код.
Начнем с базовых типов и вариантов их использования, далее будем углубляться в конструкции typescript
и там где это важно будем разбирать опции конфигурации.
Важно понимать, что typescript автоматически умеет выводить тип на основе присвоенного значения, не стоит слепо проставлять типы всегда и везде.
boolean
Может принимать только два значения true
или false
1
2
const bool1: boolean = true;
const bool2: boolean = false;
Как это можно использовать.
Например, можно просто вернуть значение true
двойным отрицанием
1
2
let test: boolean = true;
console.log(!!test); // true
Логическое И/ИЛИ
1
2
3
4
5
let test1: boolean = true && true && false;
console.log(test1); // false
let test2: boolean = false || true;
console.log(test2); // true
Либо у нас есть функция проверка, которая как раз возвращает тип boolean
.
1
2
3
4
5
function test(num:number): boolean {
return num >= 1;
}
console.log(test(0)); // false
number
Это числа. Могут быть с плавающей точкой, десятичные, шестнадцатеричными - это все тип number
.
1
2
3
const decimal: number = 6;
const float: number = 3.14;
const binary: number = 0b1010;
В typescript все числа представлены как числа с плавающей точкой.
string
Это примитивный тип для текстовых значений.
1
2
3
4
const string1: string = 'Строка';
const string2: string = "Строка";
const string3: string = `Строка`;
const string4: string = `Строка из другой ${string3}`;
Можно объявить строковый литеральный тип где указать несколько вариантов которые могуть быть в строке, например так
1
2
3
type Test = "one" | "two" | "three";
const str: Test = 'one';
Ну и конечно строки можно объединять с другими строками.
Строку можно использовать в качестве параметра функции и возврата значения из нее.
1
2
3
4
5
function str(s:string): string {
return s;
}
console.log(str('Строка')); // Строка
typescript
можно явно указать что переменная имеет тип строка с помощью конструкции as
.
1
2
3
let str = 'Строка';
str as string;
array
Это упорядоченные списки значений.
1
2
3
4
5
6
7
8
// Массив чисел
const arr1: number[] = [1,2,3];
// Запись выше эквивалентна
const arr2: Array<number> = [1,2,3];
// Массив специальных значений + другой массив
let mixed: (string | number | Array<[] | object | Date>)[] = ["str", 1, "str", 2, [[],{}, new Date()]];
// Массив массивов массивов
let mixed2: number[][][] = [[[1]],[[1]]];
typescript
идет по наихудшему варианту и помогает программисту в выявлении ошибок. В этом мы убедимся в будующих статьях.
tuple
В typescript
, кортежи (tuples
) - это типизированные массивы с фиксированной длиной и известными типами элементов в каждой позиции.
В отличие от обычных массивов, где все элементы должны быть одного типа, кортежи позволяют хранить элементы разных типов.
1
2
3
4
// Типы элементов строго определены
const test: [number,string,number] = [1,'123',5];
const tuple: [Date,number] = [new Date, 123];
const tuple2: [[string],[number]] = [['str'], [77]];
Что дают кортежи:
- Делают код более читаемым
- Позволяют представить структуру данных с фиксированным числом элементов, где еще типы у элементов разные.
enum
Набор именованных констант, которые облегчают работу с набором различных вариантов.
По умолчанию значениям присваиваются индексы с 0
1
2
3
4
5
6
7
enum Color {
Red, // 0
Green, // 1
Blue, // 2
}
const c:Color = Color.Red;
Есть возможность присвоить свои индексы, они будут идти по-порядку
1
2
3
4
5
6
7
8
9
enum Color {
Red = 5,
Green,
Blue,
}
const c:Color = Color.Blue;
console.log(c); // 7
Так же есть возможность использовать строки в enum
1
2
3
4
5
6
7
8
9
enum Color {
Red = 'red',
Green = 'green',
Blue = 'blue',
}
const c:Color = Color.Blue;
console.log(c); // blue
Использовать enum
можно в качестве набора возможных значений для параметров функции, например так
1
2
3
4
5
6
7
8
9
10
11
enum Color {
Red = 'red',
Green = 'green',
Blue = 'blue',
}
function c (color: Color) {
return color;
}
console.log(c(Color.Green));
enum
полезны, когда у нас есть переменная, которая может принимать только одно значение из небольшого, известного набора значений . Они улучшают читаемость кода, предоставляя понятные имена для констант, и помогают предотвратить ошибки, ограничивая возможные значения переменной.
any
any
означает вообще любой тип, в связи с этим его не рекомендуют использовать.
1
2
let notSure1: any = 4;
let notSure2: any = "Строка";
void
Это функция, которая не возвращает значение, например
1
2
3
function warnUser(): void {
}
Или переменная, где ничего нет.
1
let nothing: void = undefined;
Когда это может быть полезно:
- Когда функция выполняет действия, но не возвращает никакого значения.
- Для явного указания, что функция не должна возвращать значение, что помогает избежать случайных ошибок.
void
вtypeScript
полезен для четкого определения функций, которые не возвращают значений, и для обеспечения типовой безопасности в вашем коде
null и undefined
Специальные значения представляющие из себя отсутствие значения.
1
2
let u: undefined = undefined;
let n: null = null;
never
Тип never
представляет значения, которые никогда не должны возникать. Например, функция, которая всегда выбрасывает исключение
1
2
3
4
5
function throwError(message: string): never {
throw new Error(message);
}
throwError("error");
object
Представляет объект с как бы декларацией его типа
1
let obj: object = { name: "John", age: 30 };
1
2
3
4
5
6
7
8
9
10
interface Type {
test: number;
}
type K = {
prop: string;
}
const o1: Type = {test: 123};
const o2: K = {prop: "Строка"}
Итог
Мы расмотрели основные типы в typescript
, а в последующих статьях будем разбирать работу с типами, и как их использовать в реальных проектах.
Хотите оптимизировать свой бизнес, нужен сервис, сайт или интеграция.
Бесплатно расчитаю время разработки, предложу решение вашей задачи.