Search
Write a publication
Pull to refresh

Типы данных в 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.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.