Пост

Typescript. Основное использование типов

Базовое использование типов в 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, а в последующих статьях будем разбирать работу с типами, и как их использовать в реальных проектах.

Авторский пост защищен лицензией CC BY 4.0 .

Хотите оптимизировать свой бизнес, нужен сервис, сайт или интеграция.

Бесплатно расчитаю время разработки, предложу решение вашей задачи.