Как стать автором
Обновить

Типы данных в TypeScript

TypeScript строго типизированный язык программирования, в котором каждая переменная и константа имеет определенный тип.

number — тип для числовых значений;
string — тип для строковых значений;
boolean — тип для  булевых значений, принимает в себя true или false;
any
 — специальный тип, который используется для отключения проверки типа. Будет полезен, когда присеваемое переменой значение, может менять свой тип. Для установки типа используется знак двоеточия, после которого указывается название типа. Пример:

const str: string = "Helo"
const int: number = 48
const isValid: boolean = true
let variable: any = 84

never — тип для переменной, у которой отсутствие значение. Обычно используется в качестве возвращаемого типа функций, которые генерируют или возвращают ошибку. Пример использования типа never:

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

symbol — представляет собой уникальный идентификатор. По спецификации в качестве ключей для свойств объектов могут использоваться только строки или символы. Создаются новые символы с помощью функции “Symbol”. При его создании символу можно дать описание (имя), в основном использующееся для отладки кода. Это делается передачей строки внутри функции. Символы гарантировано уникальны. Даже если создать символы с одинаковым описанием, они все ровно будут уникальными. Например:

let id1 = Symbol(‘id’);
let id2 = Symbol(‘id’);

console.log(id1 === id2); // false

Символы позволяют создавать скрытые свойства объектов, к которым нельзя нечаянно обратиться и перезаписать их с других частей программы. Например мы работаем с объектом “user”, который принадлежит к стороннему коду мы хотим добавить идентификатор и используем для этого символьный ключ:

let user = {
  name: “Robot”
};
let id = Symbol(‘id’);
user[id] = 1;

Так как объект “user” принадлежит стороннему коду, то нам не следует добавлять к нему какие либо поля, это не безопасно, но к символу сложно нечаянно обратиться, сторонний код вряд ли его вообще увидит, поэтому в данном случае добавления поля к объекту не вызовет проблем. Если мы ходим использовать символ при литерально объявлении объекта (когда сразу задаем какие то свойства и значения), то тогда нам нужно заключать наш символ в квадратные скобки. Пример:

let user = {
  name: “Robot”,
  [id]: 123 // просто “id: 123” работать не будет.
};

Исходя из того что символы уникальны, даже если их имена совпадают. Но что, если, мы хотим, наоборот, чтобы символы с одинаковыми именами были одной сущностью. Например, разные части нашего приложения хотят получить доступ к символу “id”, подразумевая именно одно и то же свойство. Для этого существует глобальный реестр символов, мы можем создавать в нем символы и обращаться к ним и каждый раз гарантированно нам будет возвращаться один и тот же символ. Для чтения чтения, или при отсутствии создания символа в реестре используется конструкция Symbol.for(key):

let id = Symbol.for(‘id’);
let id2 = Symbol.for(‘id’);

console. log(id1 === id2); // true

Так, же существует множество системных символов, использующихся внутри самого javascript, которые используются для настройки различных аспектов поведения объектов.

enum — тип для перечисляемых значений. Представляет собой набор логически связанных констант, в качестве значений которых могут выступать как числа, так и строки. В случае, когда идентификаторам констант значение не устанавливается явно, они ассоциируются с числовым значениями, в порядке возрастания, начиная с нуля. Пример использования типа enum:

enum Fruits {
  Apple, // 0 
  Pear = 1, // 1
  Banana, // 2 
  Citrus = "Lemon",
}

array — тип обозначающий массивы. У этого типа есть две формы указания. Пример:

const numberArray: number[] = [1, 2, 3, 4, 5,]
const numberArray2: Array<number> = [1, 2, 3, 4, 5,]

В TypeScript есть конструкция которая позволяет создавать типы, для создания нового типа используется ключевое слово “type”.

type Login = string
type ID = string | number

const name: login = ‘admin’
const id1: id = ‘123’
const id2: id = 123

null и undefined — Примитивные типы, которые соответствуют значениям null и undefined в javascript. Чаще всего используются для определения новых типов. Пример:

type SomeType = string | null | undefined 

Но, если нужно прописать пустой тип для функции (если функция ничего не возвращает), то обычно используется void.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.