Пропустить до содержимого

Примитивные типы

TypeScript поддерживает 7 примитивных типов. Примитивный тип данных — это тип, который не является объектом и не имеет связанных с ним методов. В TypeScript все примитивные типы неизменяемы, то есть после присваивания их значения нельзя изменить.

string

Примитивный тип string хранит текстовые данные, а его значение всегда заключено в двойные или одинарные кавычки.

const x: string = 'x';
const y: string = 'y';

Строки могут занимать несколько строк, если окружить их символами обратной кавычки (`):

let sentence: string = `xxx,
yyy`;

boolean

Тип данных boolean в TypeScript хранит двоичное значение: true или false.

const isReady: boolean = true;

number

Тип данных number в TypeScript представлен 64-битным числом с плавающей точкой. Тип number может представлять целые и дробные числа. TypeScript также поддерживает шестнадцатеричные, двоичные и восьмеричные числа, например:

const decimal: number = 10;
const hexadecimal: number = 0xa00d; // Hexadecimal starts with 0x
const binary: number = 0b1010; // Binary starts with 0b
const octal: number = 0o633; // Octal starts with 0o

bigint

Тип bigint представляет целые значения, которые могут превышать максимальное безопасное целое число, поддерживаемое типом number, — 2^53 - 1.

Значение bigint можно создать, вызвав встроенную функцию BigInt() или добавив n в конец любого целочисленного литерала:

const x: bigint = BigInt(9007199254740991);
const y: bigint = 9007199254740991n;

Примечания:

  • Значения bigint нельзя смешивать с number и нельзя использовать со встроенным объектом Math; их необходимо привести к одному типу.
  • Значения bigint доступны, только если в конфигурации указана целевая версия ES2020 или выше.

Symbol

Символы — это уникальные идентификаторы, которые можно использовать в качестве ключей свойств объектов во избежание конфликтов имён.

type Obj = {
[sym: symbol]: number;
};
const a = Symbol('a');
const b = Symbol('b');
let obj: Obj = {};
obj[a] = 123;
obj[b] = 456;
console.log(obj[a]); // 123
console.log(obj[b]); // 456

null и undefined

Типы null и undefined означают отсутствие значения.

Тип undefined означает, что значение не присвоено или не инициализировано, либо указывает на непреднамеренное отсутствие значения.

Тип null означает, что нам известно, что поле не имеет значения, поэтому оно недоступно; этот тип указывает на преднамеренное отсутствие значения.

Массив

array — это тип данных, который может хранить несколько значений одного или разных типов. Его можно определить с помощью следующего синтаксиса:

const x: string[] = ['a', 'b'];
const y: Array<string> = ['a', 'b'];
const j: Array<string | number> = ['a', 1, 'b', 2]; // Union

TypeScript поддерживает массивы только для чтения со следующим синтаксисом:

const x: readonly string[] = ['a', 'b']; // Readonly modifier
const y: ReadonlyArray<string> = ['a', 'b'];
const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];
j.push('x'); // Invalid

TypeScript поддерживает кортежи и кортежи только для чтения:

const x: [string, number] = ['a', 1];
const y: readonly [string, number] = ['a', 1];

any

Тип данных any представляет буквально «любое» значение и используется по умолчанию, когда TypeScript не может вывести тип или тип не указан.

При использовании any компилятор TypeScript пропускает проверку типов, поэтому при использовании any безопасность типов отсутствует. Как правило, не используйте any, чтобы заглушить ошибку компилятора; вместо этого сосредоточьтесь на исправлении ошибки, поскольку использование any позволяет нарушать контракты и лишает преимуществ автодополнения TypeScript.

Тип any может быть полезен при постепенной миграции с JavaScript на TypeScript, поскольку позволяет заглушать ошибки компилятора.

В новых проектах используйте параметр конфигурации TypeScript noImplicitAny, который заставляет TypeScript сообщать об ошибках там, где используется или выводится any.

Тип any обычно становится источником ошибок, способных скрыть реальные проблемы с типами. По возможности избегайте его использования.