Skip to content

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

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; // Шестнадесетичната система започва с 0x
const binary: number = 0b1010; // Двоичната система започва с 0b
const octal: number = 0o633; // Осмичната система започва с 0o

bigInt

bigInt представлява числови стойности, които са много големи (253 – 1) и не могат да бъдат представени с number.

bigInt може да бъде създаден чрез извикване на вградената функция BigInt() или чрез добавяне на n в края на всеки целочислен литерал:

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

Забележки:

  • Стойностите от тип bigInt не могат да се смесват със стойности от тип number и не могат да се използват с вградената библиотека Math; те трябва да бъдат преобразувани към един и същ тип.
  • Стойностите от тип bigInt са достъпни само ако целевата конфигурация е ES2020 или по-нова.

Символ

Символите са уникални идентификатори, които могат да се използват като ключове на свойства в обекти, за да се предотвратят конфликти при наименуване.

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 поддържа readonly масиви чрез следния синтаксис:

const x: readonly string[] = ['a', 'b']; // Readonly модификатор
const y: ReadonlyArray<string> = ['a', 'b'];
const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];
j.push('x'); // Невалидно

TypeScript поддържа tuple и readonly tuple:

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

any

Типът any представлява буквално “всякаква” стойност и е стойността по подразбиране, когато TypeScript не може да изведе тип или когато такъв не е указан.

При използване на any TypeScript компилаторът пропуска проверката на типовете, което означава, че няма типова безопасност. По принцип не бива да се използва any, за да се заглуши компилаторът при възникване на грешка. Вместо това е по-добре грешката да бъде отстранена, тъй като чрез използването на any могат да се нарушат контрактите и се губят предимствата на TypeScript като autocomplete.

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

При нови проекти използвайте TypeScript конфигурацията noImplicitAny, която позволява на TypeScript да генерира грешки, когато any се използва или бъде изведен автоматично.

Типът any често е източник на грешки, тъй като може да прикрие реални проблеми с типовете. Избягвайте използването му възможно най-много.